亦称: 虚拟构造函数、Virtual Constructor、Factory Method
调用工厂方法的代码 (通常被称为客户端代码) 无需了解不同子类返回实际对象之间的差别。 客户端将所有产品视为抽象的 Transport
。 客户端知道所有运输对象都提供 deliver()
, 但是并不关心其具体实现方式。
<aside> ✅ 避免创建者和具体产品之间的紧密耦合。
</aside>
<aside> ✅ 单一职责原则。 你可以将产品创建代码放在程序的单一位置, 从而使得代码更容易维护。
</aside>
<aside> ✅ **开闭原则。**无需更改现有客户端代码, 你就可以在程序中引入新的产品类型。
</aside>
<aside> ❌ 应用工厂方法模式需要引入许多新的子类, 代码可能会因此变得更复杂。 最好的情况是将该模式引入创建者类的现有层次结构中。
</aside>