Untitled

适用场景

实现方法

  1. 以不同的产品类型与产品变体为维度绘制矩阵

    Untitled

  2. 为所有产品声明抽象产品接口。 然后让所有具体产品类实现这些接口。

  3. 声明抽象工厂接口, 并且在接口中为所有抽象产品提供一组构建方法

  4. 为每种产品变体实现一个具体工厂类

  5. 在应用程序中开发初始化代码。 该代码根据应用程序配置或当前环境, 对特定具体工厂类进行初始化。 然后将该工厂对象传递给所有需要创建产品的类。

  6. 找出代码中所有对产品构造函数的直接调用, 将其替换为对工厂对象中相应构建方法的调用。

优缺点

<aside> ✅ 你可以确保同一工厂生成的产品相互匹配。

</aside>

<aside> ✅ 避免创建者和具体产品之间的紧密耦合。

</aside>

<aside> ✅ 单一职责原则。 你可以将产品创建代码放在程序的单一位置, 从而使得代码更容易维护。

</aside>

<aside> ✅ **开闭原则。**无需更改现有客户端代码, 你就可以在程序中引入新的产品类型。

</aside>

<aside> ❌ 应用工厂方法模式需要引入许多新的子类, 代码可能会因此变得更复杂。 最好的情况是将该模式引入创建者类的现有层次结构中。

</aside>