亦称: 虚拟构造函数、Virtual Constructor、Factory Method

调用工厂方法的代码 (通常被称为客户端代码) 无需了解不同子类返回实际对象之间的差别。 客户端将所有产品视为抽象的 Transport 。 客户端知道所有运输对象都提供 deliver(), 但是并不关心其具体实现方式。

Untitled

Untitled

Untitled

适用场景

优缺点

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

</aside>

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

</aside>

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

</aside>

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

</aside>