东原养生网-生活百科

简介

抽象工厂模式(Abstract Factory Pattern)属于设计模式中的创建模式,用于构建产品系列。

抽象工厂模式应用场景(24种设计模式优缺点)

定义

抽象工厂模式:提供一个接口来创建一系列相关或相互依赖的对象,而无需指定它们的特定类。 (您可以将抽象工厂视为对具有相同主题的一组独立工厂方法的封装)

抽象工厂模式应用场景(24种设计模式优缺点)

抽象工厂模式中有一个产品族的概念。如果您了解产品系列,那么它就是抽象工厂的介绍。所谓产品族是由一系列相关产品对象组成的对象族。它们是独立的,但也彼此相关。在一起,它们可以成为更大的产品。例如,Mac计算机中的所有UI组件都是产品系列,并且存在诸如MacButton MacText之类的组件。相应的Windows计算机中的所有UI组件也构成一个产品系列。有两个产品系列中的组件,例如WindowsButton,WindowsText等。产品以不同的混合物使用。

抽象工厂模式应用场景(24种设计模式优缺点)

角色

抽象工厂模式中有四个角色,类似于工厂方法。它们是抽象工厂接口,具体工厂实现,抽象产品接口和具体产品实现。

抽象工厂模式应用场景(24种设计模式优缺点)

区别在于将有多个抽象产品接口,并且它们之间存在固有的关联。

抽象工厂模式应用场景(24种设计模式优缺点)

模式说明

在工厂方法模型中,我们给出了制造汽车的示例。实际上,这个汽车制造示例的扩展也非常适合于解释抽象工厂模型。解释产品系列时,上述Mac和Windows计算机示例。在这里,我们使用组装好的计算机进行演示。

抽象工厂模式应用场景(24种设计模式优缺点)

现在很少要组装计算机。它们通常是笔记本电脑或一体机。过去,每个人都去商店购买CPU,主板,显示器和其他组件来组装计算机。在我们的系统中,我们有各种这样的组件,用户可以选择不同的组件来组装自己喜欢的计算机。

抽象工厂模式应用场景(24种设计模式优缺点)

但是有一点要注意,主板和CPU在使用之前必须兼容,而不仅仅是将它们组合成计算机。

抽象工厂模式应用场景(24种设计模式优缺点)

如果由用户组装,则Amd主板可能使用Intel CPU,这将导致组装后的计算机无法正常运行,这些细节无需用户担心。

抽象工厂模式应用场景(24种设计模式优缺点)

此时,我们的抽象工厂模型已在现场。抽象工厂就像商店工作人员为您提供的几种包装。它定义了用于组装计算机的包装。用户可以直接使用包装中的组件,然后将其组装到计算机中。 ,所以永远不会有兼容性问题。

抽象工厂模式应用场景(24种设计模式优缺点)

有了该软件包,用户无需担心不兼容的问题,他们可以组装计算机并愉快地使用它。

您是否发现要组装计算机,用户不需要了解cpu制造商的详细信息,但是他们仍然需要了解cpu如何安装在主板上以及如何将cpu安装在主板上。计算机,然后他们可以获得一台完整的计算机,可以使用上一节中提到的工厂方法模型来帮助用户组装计算机。

抽象工厂最初来自操作系统之间的UI构造。每个系统都有自己的一套UI界面。现在这个限制不是很强。就像英特尔主板也可以装载AMD CPU一样。实现抽象工厂类就足够了。还有其他示例,例如计算机主题。包含一系列产品(例如字体,背景和策略)的产品系列也适合使用抽象工厂模式。

使用场景

适用于相互关联,相互依存和相互制约的产品

需要动态切换产品系列

优势:

抽象工厂模型将产品系列的依赖关系和约束关系放在抽象工厂中,以便于管理。

责任去耦,用户无需关心一堆他们不关心的细节,抽象工厂负责组件的创建

轻松切换产品系列,只需添加特定的工厂实施方式,客户就可以选择其他软件包。

缺点:

抽象工厂模式类正在迅速增加。对于产品系列,需要添加一个具体的工厂来实现它,这比较麻烦

产品系列很难扩展产品。将产品添加到产品系列时,需要将功能添加到抽象工厂接口,并且需要修改所有相应的具体工厂实现,这很严重。

抽象工厂并没有完全屏蔽创建细节,它给出的只是组件。在这种情况下,可以与工厂模式或简单工厂模式结合使用。

最佳做法

每个人都应该发现,如果抽象工厂模式只有一个组成部分,那么实际上它会降级为工厂方法模式,也就是说,没有产品系列的概念,只剩下一个产品,所以简单的工厂,工厂方法,抽象这三个工厂之间存在内部连接,区别仅在于产品的复杂性。

抽象工厂的本质是选择产品系列,因此您可以基于此功能确定是否可以应用抽象工厂。

热门精选

大家都在看