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

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

抽象工厂模式

基本原理

含义

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

解决的问题

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

组成部分

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

UML类图

抽象工厂模式UML类图

使用步骤

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

优点

  • 低耦合

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

  • 更符合开闭原则

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

  • 符合单一职责原则,

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

缺点

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

适用场景

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

总结

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

posted @ 2020-08-06 17:30  valuenovel  阅读(276)  评论(0编辑  收藏  举报