抽象工厂模式*
回顾之前的设计模式,简单工厂模式所有逻辑都封装在工厂类中,工厂根据客户提供的产品参数创建对应产品的对象实例;工厂方法模式将产品的创建过程放到了具体工厂类中,每一个工厂可以创建一个具体产品,由此可能会创建许多工厂类。很多时候,一个工厂不只是生产一种产品,而是生成一类产品,此时我们可以把这些相关的产品归纳为一个“产品族”,有同一个工厂生成。
抽象工厂模式定义*
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂模式结构*
抽象工厂模式结构与工厂方法模式结构类似,不同之处在于,一个具体工厂可以生成多种同类相关的产品。

总结*
抽象工厂模式中,如果需要新增一系列的产品,只需增加一族新的具体产品类并提供一个对应的工厂类即可。
优点:
- 工厂方法用于创建客户所需产品,一个工厂可生产一系列产品。
- 新加入一系列产品,符合开闭原则。
缺点:
- 在已有系列中新增产品需要修改抽象层代码,对原有系统改动较大,违背开闭原则。
适用环境:
- 一系列/一族产品需要被同时适用时,适合适用抽象工厂模式;
- 产品结构稳定,设计完成之后不会向系统中新增或提出某个产品。
最后更新: November 26, 2020