跳到主要内容

抽象工厂模式

抽象工厂将多个工厂方法组合在一起,以创建一系列相关或依赖对象。它保证了这一系列对象之间具有某种关联性

结构

抽象工厂示意图抽象工厂示意图

相较于 工厂方法模式,抽象工厂模式提供了对一组相关的产品(属于同一个系列且在高层主题或概念上具有相关性)对应的工厂方法的封装。

应用场景

  • 当有一系列相关的产品需要被创建,且这些产品都具有相应的变体时

优缺点

其优缺点基本上和 工厂方法模式 一致,同时还能够保证一组产品之间的关联性。

代码示例

下面的示例展示了一个抽象工厂模式的实现。这个模式用于创建一系列相关的产品,而无需指定其具体的类。

在这个例子中,我们有两种产品系列:木制系列(WoodenDoor, Carpenter)和铁制系列(IronDoor, Welder)。每种系列都包含一个门(Door)和一个安装工(DoorFitter)。

DoorFactory抽象工厂接口,它定义了创建 DoorDoorFitter 的方法。WoodenDoorFactoryIronDoorFactory具体工厂,它们分别实现了 DoorFactory 接口,用于创建相应系列的产品。例如,WoodenDoorFactory 会创建 WoodenDoorCarpenter

客户端代码通过 DoorFactory 接口与工厂进行交互。这样,客户端就可以使用任何具体工厂来创建产品,而无需关心产品的具体实现。这确保了创建出的产品(如门和安装工)是相互兼容的(例如,木匠安装木门),从而保证了产品家族的一致性。