工厂方法模式
来源:互联网 发布:义乌淘宝培训多少钱 编辑:程序博客网 时间:2024/05/21 01:28
工厂方法模式:
Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation
to subclasses.
定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类。
例子说明
一个奔驰车抽象类Benz,两个具体的车型BenzC180 、BenzE260
一个奔驰车工厂类BenzFactory,两个具体的工厂C180Factory、E260Factory
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:11 * Abstract:奔驰车抽象类 */public interface Benz { public void carColor(); public void carSpeed(); public void carPrice();}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:14 * Abstract:奔驰车C180详细信息 */public class BenzC180 implements Benz { public BenzC180(){ this.carColor(); this.carSpeed(); this.carPrice(); } public void carColor() { System.out.println("C180.................白色"); } public void carSpeed() { System.out.println("C180.................160公里每小时"); } public void carPrice() { System.out.println("C180.................10000元"); }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:15 * Abstract:奔驰车E260详细信息 */public class BenzE260 implements Benz { public BenzE260(){ this.carColor(); this.carSpeed(); this.carPrice(); } public void carColor() { System.out.println("E260.................黑色"); } public void carSpeed() { System.out.println("E260.................100公里每小时"); } public void carPrice() { System.out.println("E260.................20000元"); }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:12 * Abstract:奔驰车工厂类 */public interface BenzFactory { public Benz createCar();}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:13 * Abstract:奔驰C180工厂类 */public class C180Factory implements BenzFactory { public Benz createCar() { return new BenzC180(); }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:16 * Abstract:奔驰E260工厂类 */public class E260Factory implements BenzFactory { public Benz createCar() { return new BenzE260(); }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:18 * Abstract:客户端测试 */public class Client { public static void main(String[] args) { BenzFactory benzFactory=new C180Factory(); benzFactory.createCar(); System.out.println("---------------------------------------"); benzFactory=new E260Factory(); benzFactory.createCar(); }}
源码下载:https://github.com/YEN-GitHub/PatternDemo/tree/master/src/CreationalPattern/factory
1 0
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 【模式】工厂方法模式
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 工厂模式(简单工厂、工厂方法)
- 简单工厂|工厂方法|抽象工厂模式
- 设计模式-工厂模式(简单工厂模式+工厂方法模式)
- 数据化运营7大经典思路
- VirtualBox 4.3“不能为虚拟电脑 打开一个新任务”解决方案
- 产生1mS方波
- python faster rcnn
- Webpack2 完整踩坑教程(七)
- 工厂方法模式
- 什么是管道流
- Linux文件查找
- bzoj1119[POI2009] SLO
- Authentication failed for
- Matlab&Simulink开发STM32F4
- window 服务中调试技巧
- overridePendingTransition
- 博客站长务必要养成的好习惯