【重温设计模式】之004抽象工厂模式

【重温设计模式系列源码】

抽象工厂模式

基本原理

含义

抽象工厂模式,即Abstract Factory Pattern,提供一个创建一系列相关或相互依赖对象的接口,
而无须指定它们具体的类;具体的工厂负责实现具体的产品实例。

解决的问题

即工厂方法模式的缺点: 每个工厂只能创建一类产品

组成部分

组成 关系 作用
抽象产品(IProduct) 产品顶级抽象父类 描述产品的公共接口
抽象子产品(IxxProduct) 具体产品类的父类,顶级抽象父类的子类 描述相对具体的抽象产品的公共接口
具体产品(XxProduct) 具体产品类,抽象父类的子类 描述具体的产品
抽象工厂(Factory) 具体工厂的父类 描述工厂的公共接口
具体工厂(XxFactory) 具体工厂类,抽象工厂的子类 描述具体工厂

UML类图

【重温设计模式】之004抽象工厂模式_第1张图片

使用步骤

  1. 创建产品标准
  2. 创建产品抽象类(一系列相关的产品)
  3. 创建具体产品类
  4. 创建工厂标准
  5. 创建生产具体产品的工厂

优点

  • 低耦合

将具体产品的创建延迟到子类。

  • 更符合开闭原则

新增系列相关产品时,只需要增加具体的工厂和工厂需要生产的具体产品即可。

  • 符合单一职责原则,

每个具体工厂类只负责创建对应的产品

缺点

抽象工厂模式很难支持新种类产品的变化。
这是因为抽象工厂接口中已经确定了可以被创建的产品集合,
如果需要添加新产品,此时就必须去修改抽象工厂的接口,这样就涉及到抽象工厂类的以及所有子类的改变,
这样也就违背了“开发——封闭”原则。

适用场景

  • 一个系统不依赖产品类实例的创建和组合。
  • 这个系统有多个系列的产品,而系统中只能消费其中的一系列产品。
  • 系统要求提供一个产品类的库,所有产品以同样的接口出现,客户端不需要依赖具体实现。

总结

尽信书不如无书,任何脱离实际业务的架构都是在耍流氓;
所谓原则,只是为了更好地为我们服务;
具体如何应用需要我们在业务实践中灵活把控。

你可能感兴趣的:(【重温设计模式】之004抽象工厂模式)