注:问题在文末。
我已经阅读了有关Abstract Factory vs Factory Method的其他 stackoverflow 线程。我了解每种模式的意图。但是,我不清楚定义。
工厂方法定义了一个用于创建对象的接口,但让子类决定要实例化哪些接口。工厂方法允许类将实例化推迟到子类。
相比之下,抽象工厂提供了一个接口,用于创建相关或依赖对象的系列,而无需指定它们的具体类。
——约翰·费米内拉
抽象工厂看起来与工厂方法非常相似。我画了几个 UML 类来说明我的观点。
笔记:
- 该图来自www.yuml.com,因此它们的方向并不完美。但它是一项免费服务:)。
- 图表可能并不完美。我仍在学习GoF设计模式。
工厂方法:
抽象工厂(只有 1 名成员):
抽象工厂(更多成员):
问题:
- 如果抽象工厂只有一个创造者和一个产品,那还是抽象工厂模式吗?(创建家庭的界面)
- 工厂方法具体创建者可以从接口创建还是必须来自类?(类将实例化推迟到子类)
- 如果抽象工厂只能有一个创建者和一个产品,那么抽象工厂和工厂方法的唯一区别是前者的创建者是一个接口,后者的创建者是一个类吗?