创建型模式之抽象工厂模式
2016-10-13 21:58
169 查看
抽象工厂模式(Abstract Factory)
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。抽象工厂是工厂模式的升级版,他用来创建一组相关或者相互依赖的对象。来看下抽象工厂模式的类图:
类的创建依赖工厂类,程序需要扩展时,我们必须创建新的工厂类。工厂类是用来生产产品的,那我们也可以把“工厂类当成我们要生产的产品”,所以抽象工厂就是“工厂的工厂”,即生产工厂的工厂。
抽象工厂的优点:
抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联。适用场景:
一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式。//汽车工厂 interface CarFactory { void productCar(); } //抽象工厂,汽车工厂的工厂 interface Provider { CarFactory creatCarFactory(); } //保时捷工厂 class PorscheFactory implements CarFactory { @Override public void productCar() { System.out.println("生产保时捷汽车"); } } //拖拉机工厂 class TractorFactory implements CarFactory { @Override public void productCar() { System.out.println("生产拖拉机"); } } //生产保时捷工厂的工厂 class SuperPorscheFactory implements Provider { @Override public CarFactory creatCarFactory() { return new PorscheFactory(); } } //生产拖拉机工厂的工厂 class SuperTractorFactory implements Provider { @Override public CarFactory creatCarFactory() { return new TractorFactory(); } } public class Main { public static void main(String[] args) { //创建一个生产保时捷工厂的工厂 Provider cf = new SuperPorscheFactory(); //生产保时捷工厂 CarFactory pf = cf.creatCarFactory(); //保时捷工厂生产保时捷汽车 pf.productCar(); //生产拖拉机 Provider tf = new SuperTractorFactory(); CarFactory tff = tf.creatCarFactory(); tff.productCar(); } }
结果
生产保时捷汽车 生产拖拉机
相关文章推荐
- 设计模式杂谈:创建型模式之抽象工厂模式(Abstract Factory)
- 创建型模式--抽象工厂模式(Abstract Factory)
- (第Ⅱ部分 创建型模式篇) 第2章 抽象工厂模式(Abstract Factory)
- 面向对象设计模式之AbstractFactory抽象工厂模式(创建型)
- 面向对象设计模式之AbstractFactory抽象工厂模式(创建型)
- 3、Abstract Factory 抽象工厂模式(创建型模式)
- 创建型模式之抽象工厂模式(AbstractFactory Pattern)C++实现******
- 五.创建型设计模式——Abstract Factory Pattern(抽象工厂模式)
- [导入]C#面向对象设计模式纵横谈(4):Abstract Factory 抽象工厂模式(创建型模式)
- Abstract Factory 抽象工厂模式(创建型模式)
- (第Ⅱ部分 创建型模式篇) 第2章 抽象工厂模式(Abstract Factory)
- [创建型模式系列]Abstract factory of Design Pattern模式设计之抽象工厂模式
- 创建型模式——抽象工厂模式(Abstract Factory Pattern)
- C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
- C#面向对象设计模式学习笔记(2) - Abstract Factory 抽象工厂模式(创建型模式)
- 设计模式——创建型模式之 Abstract Factory抽象工厂模式
- Abstract Factory 抽象工厂模式(创建型模式)
- 设计模式笔记(3)---抽象工厂模式(创建型)
- [创建型模式:抽象工厂模式]
- 设计模式笔记(3)---抽象工厂模式(创建型)