参考
3. 浅谈Java设计模式——单实例、简单工厂、抽象工厂、观察者 | CSDN
抽象工厂
为创建一组相关或者相互依赖的对象提供一个接口,而无需指定他们具体的类。
通俗讲,就是创建工厂的工厂,每个工厂都实现抽象工厂,从而决定一个产品族;不同工厂生产不同产品族。
抽象工厂只关心接口,也就是工厂和产品之间的关系,工厂和用户之间的关系,而不关心产品如何实现,而Template和Builder Pattern关心产品实现方式,这是主要的区别。
适用场景:当有一组具体的、相关的产品组成一个产品族或者整套方案时,通过抽象工厂就能很好的实现这种逻辑关系,而且用户创建不容易出错。
特点:一个具体工厂生产的产品相关,组成一个产品族;
增加一种产品族而不增加具体产品时,新增一个具体工厂类即可;
缺点:增加一种具体的产品时,可能会导致所有的工厂包括抽象工厂接口都需要针对具体产品族而修改;
通用类图:
这里Factory1,2,3都能创建AbstractProductA,B,C具体子类,但是分别只能创建具体子类中的一个,这些具体子类组合到一起,就代表一个产品族;也就是每个具体工厂代表了一种整体方案;
原文地址:https://www.cnblogs.com/fortunely/p/9551642.html
时间: 2024-10-10 13:09:23