[DesignPattern] 设计之禅读书笔记(三) 抽象工厂模式
作者:互联网
-
抽象工厂模式(Abstract Factory Pattern)
- Provide an interface for creating families of related or dependent objects without specifying their concerete classes.(为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。)
- 优点:
- 封装性
- 产品族内的约束为非公开状态
- 缺点:
- 产品族扩展非常困难
- 使用场景:
- 一个对象(或者一组没有任何关系的对象)都有相同的约束, 则可以使用抽象工厂。比如涉及不同的操作系统的时候可以考虑用抽象工厂模式。
- 注意事项:
- 产品族扩展困难,而不是生产线(产品等级,eg下图中的1/2)。也就是说横向扩展容易,纵向扩展难
- 图列
- 例子
public abstract class AbstractProductA{ public void sharedMethod(); public abstract doSomething(); } public class ProductA1 exends AbstractA { public void doSomthing() { // } } public class ProductA2 exends AbstractA { public void doSomthing() { // } } // 有N个产品族,在抽象工厂类中就应该有N个创建方法 public abstract class AbstractCreator { public abstract AbstractProductA createProductA(); public abstract AbstractProductB createProductB(); } // 有M个生产线(产品等级)就应该有M个实现工厂类,在每个实现工厂中,实现不同生产线(产品等级)的生产任务。 public class Creator1 extends AbstractCreator { public AbstractProduceA createProductA{ return new ProductA1(); } public AbstractProduceB createProductB{ return new ProductB1(); } } public class Creator2 extends AbstractCreator { public AbstractProduceA createProductA{ return new ProductA2(); } public AbstractProduceB createProductB{ return new ProductB2(); } }
- 改进:
- 可以给abstractProduct和abstractCreator都加入interface,这样就更方便使用。
标签:return,之禅,读书笔记,abstract,public,DesignPattern,new,工厂,class 来源: https://www.cnblogs.com/codingEskimo/p/13818436.html