设计模式(九)[创建模式] 工厂方法模式(Factory Method)
2018-08-12 21:33
477 查看
工厂方法模式是简单工厂模式进一步抽象和推广。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。这个核心类则摇身一变,成为抽象工厂的角色,仅负责给具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
1.工厂方法模式的结构
结构与角色
抽象工厂(Creator)角色:担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类必须实现这个接口。在上面的系统中,这个角色由Java接口Creator扮演:在实际的系统中,这个角色也常常使用抽象Java类实现。
具体工厂(Concrete Creator)角色:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。在本系统中给出了两个这样的角色,ConcreteCreator1和ConcreteCreator2。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在本系统由Java接口Product扮演。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所声明的接口。
1.工厂方法模式的结构
结构与角色
抽象工厂(Creator)角色:担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类必须实现这个接口。在上面的系统中,这个角色由Java接口Creator扮演:在实际的系统中,这个角色也常常使用抽象Java类实现。
具体工厂(Concrete Creator)角色:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。在本系统中给出了两个这样的角色,ConcreteCreator1和ConcreteCreator2。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在本系统由Java接口Product扮演。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所声明的接口。
package com.test; public interface Creator { /** * 工厂方法 * @return */ public Product factory(); }
package com.test; public interface Product { }
package com.test; public class ConcreteCreator1 implements Creator { /** * 工厂方法 */ @Override public Product factory() { return new ConcreteProduct1(); } }
package com.test; public class ConcreteProduct1 implements Product { public ConcreteProduct1() { super(); } }
package com.test; public class ConcreteProduct2 implements Product { public ConcreteProduct2() { super(); // TODO Auto-generated constructor stub } }
package com.test; public class ConcreteCreator2 implements Creator { /** * 工厂方法 */ @Override public Product factory() { return new ConcreteProduct2(); } }
package com.test; public class Client { private static Creator creator1,creator2; private static Product prod1,prod2; public static void main(String[] args) { creator1 = new ConcreteCreator1(); prod1 = creator1.factory(); creator2 = new ConcreteCreator2(); prod2 = creator2.factory(); } }
相关文章推荐
- 创建型模式5:工厂方法模式(Factory Method)
- 设计模式 -- 工厂方法模式 FactoryMethod
- .Net设计模式学习笔记(五):工厂方法模式(Factory Method)
- Factory Method 工厂方法模式(创建型模式)
- 设计模式 工厂方法模式(Factory Method)
- 3. 工厂方法模式(Factory Method)---------- 创建型模式
- 设计模式学习(创建型模式)—工厂方法模式(Factory Method)
- .NET设计模式(5):工厂方法模式(Factory Method)
- JAVA设计模式(1) —<创建型>工厂方法模式(Factory Method)
- (1)Java设计模式-工厂方法模式(Factory Method)
- 图形学优化_3: ogre设计模式_Factory Method (工厂方法模式)
- 创建对象_工厂方法(Factory Method)模式 与 静态工厂方法
- 设计模式-工厂方法模式(FactoryMethod)
- 设计模式之一---工厂方法模式【Factory Method模式】
- JAVA设计模式(01_1):创建型-工厂模式【工厂方法模式】(Factory Method)
- 构造型模式之(Factory Method)工厂方法模式
- 设计模式之工厂方法模式(Factory Method)摘录
- 设计模式: 工厂方法模式(Factory Method)
- 【重构与模式】6.4 用Factory Method引入多态创建
- 设计模式(2)-工厂方式模式(Factory Method)