2020-08-06

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

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

抽象工厂模式

基本原理

含义

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

解决的问题

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

组成部分

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

UML类图

抽象工厂模式UML类图

使用步骤

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

优点

  • 低耦合

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

  • 更符合开闭原则

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

  • 符合单一职责原则,

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

缺点

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

适用场景

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

总结

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

【重温设计模式】之004抽象工厂模式亚马逊后台操作实操启明星软件《我是传奇》第七集预告片精准监测任意ASIN关键词排名!JS王炸新功能!长沙上半年跨境电商交易额增长逾六成亚马逊FBA关键字研究工具和优化工具平安夜是几月几号?皇岗口岸在哪里?圣诞节是几月几号?

No comments:

Post a Comment