设计模式01 创建型模式 - 抽象工厂

Posted fortunely

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式01 创建型模式 - 抽象工厂相关的知识,希望对你有一定的参考价值。

参考

1. 三种工厂模式的分析以及C++实现|博客园

2. 设计模式之三:抽象工厂模式 | CSDN

3. 浅谈Java设计模式——单实例、简单工厂、抽象工厂、观察者 | CSDN

 

抽象工厂

为创建一组相关或者相互依赖的对象提供一个接口,而无需指定他们具体的类。

通俗讲,就是创建工厂的工厂,每个工厂都实现抽象工厂,从而决定一个产品族;不同工厂生产不同产品族。

抽象工厂只关心接口,也就是工厂和产品之间的关系,工厂和用户之间的关系,而不关心产品如何实现,而Template和Builder Pattern关心产品实现方式,这是主要的区别。

 

适用场景:当有一组具体的、相关的产品组成一个产品族或者整套方案时,通过抽象工厂就能很好的实现这种逻辑关系,而且用户创建不容易出错。

特点:一个具体工厂生产的产品相关,组成一个产品族;

增加一种产品族而不增加具体产品时,新增一个具体工厂类即可;

缺点:增加一种具体的产品时,可能会导致所有的工厂包括抽象工厂接口都需要针对具体产品族而修改;

 

通用类图:

这里Factory1,2,3都能创建AbstractProductA,B,C具体子类,但是分别只能创建具体子类中的一个,这些具体子类组合到一起,就代表一个产品族;也就是每个具体工厂代表了一种整体方案;

技术分享图片

 

以上是关于设计模式01 创建型模式 - 抽象工厂的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之抽象工厂模式(创建型)

6创建型模式之工厂模式与抽象工厂模式

创建型设计模式——抽象工厂模式

创建型模式:抽象工厂

设计模式 - 创建型模式_抽象工厂模式

设计模式 - 创建型模式_抽象工厂模式