Java工厂方法模式(Factory Method)
来源:互联网 发布:国外设计app软件 编辑:程序博客网 时间:2024/05/29 19:17
一、定义
首先,在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。这种进一步抽象化的结果,使这种工厂方法模式可以用来允许系统在不修改具体工厂角色的情况下引进新的产品,这一特点无疑使得工厂模式具有超过简单工厂模式的优越性。
2)具体工厂角色:它含有和具体业务逻辑有关的代码,它实现了抽象工厂的所有接口,主要负责创建具体产品的对象。
3)抽象产品角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在java中一般有抽象类或者接口来实现。
4)具体产品角色:实现了抽象产品角色所有的接口,具体工厂角色所创建的对象就是此角色的实例。
可以看出工厂方法的加入,使得对象的数量成倍增长。当产品种类非常多时,会出现大量的与之对应的工厂对象,这不是我们所希望的。也许在下面情况下你可以考虑使用工厂方法模式:
1)当客户程序不需要知道要使用对象的创建过程;
2)客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。
首先,在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。这种进一步抽象化的结果,使这种工厂方法模式可以用来允许系统在不修改具体工厂角色的情况下引进新的产品,这一特点无疑使得工厂模式具有超过简单工厂模式的优越性。
二、结构图及各部分的功能
2)具体工厂角色:它含有和具体业务逻辑有关的代码,它实现了抽象工厂的所有接口,主要负责创建具体产品的对象。
3)抽象产品角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在java中一般有抽象类或者接口来实现。
4)具体产品角色:实现了抽象产品角色所有的接口,具体工厂角色所创建的对象就是此角色的实例。
三、代码实例
// 抽象产品角色public interface Car {public void dirve();}
//具体产品角色public class BenZCar implements Car {@Overridepublic void dirve() {System.out.println("BenZCar is moving...");}}
//具体产品角色public class BMCar implements Car {@Overridepublic void dirve() {System.out.println("BMCar is moving...");}}
//抽象工厂public interface DriveFactory {public Car driveCar();}
public class BenZDriveFactory implements DriveFactory {@Overridepublic Car driveCar() {return new BenZCar();}}
public class BMDriveFactory implements DriveFactory {@Overridepublic Car driveCar() {return new BMCar();}}
public class Client {public static void main(String[] args) {DriveFactory factory = new BMDriveFactory();Car bmCar = factory.driveCar();bmCar.dirve();}}四、总结
可以看出工厂方法的加入,使得对象的数量成倍增长。当产品种类非常多时,会出现大量的与之对应的工厂对象,这不是我们所希望的。也许在下面情况下你可以考虑使用工厂方法模式:
1)当客户程序不需要知道要使用对象的创建过程;
2)客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。
- java与模式 工厂方法(factory method)
- Java工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- Factory Method(工厂方法模式)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式 Factory Method
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- Factory Method-----工厂方法模式
- 工厂方法模式--Factory Method
- Factory Method工厂方法模式
- Factory Method - 工厂方法模式
- 工厂方法模式(Factory Method)
- 工厂方法模式 Factory Method
- 工厂方法(Factory Method)模式
- 路由之争?对入口争夺有多渴望,接下来的玩法就有多疯狂!
- iOS 5 与 iOS 6 的 low-memory 处理
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
- Sicily 1152/1153. 马周游
- vmware中的bridge、nat、host-only的区别
- Java工厂方法模式(Factory Method)
- PPPOE流程分析2 --PPPoEService系统应用
- Eclipse调试工具之 adb
- oracle,jdbc date型数据存储小结
- windows 下 连接VM虚拟机中redhat linux的网络设置
- 15--2杨辉三角
- HDU 1251 统计难题(字典树)
- 数字在数组中出现的次数
- java 打印各种 图形