【发布时间】:2011-05-11 17:19:02
【问题描述】:
注意:问题在文章末尾。
我已阅读有关 抽象工厂与工厂方法 的其他 * 线程。我了解每种模式的意图。但是,我并不清楚定义。
Factory 方法定义了一个接口 用于创建对象,但让 子类决定哪些 实例化。工厂方法让 类将实例化推迟到 子类。
相比之下,抽象工厂 提供创建接口 相关或受抚养的家庭 没有指定它们的对象 具体类。
抽象工厂看起来与工厂方法非常相似。我画了几个 UML 类来说明我的观点。
注意:
- 图表来自 www.yuml.com,因此它们的方向并不完美。但它是一项免费服务:)。
- 图表可能并不完美。我仍在学习 GoF 设计模式。
工厂方法:
抽象工厂(只有 1 位成员):
抽象工厂(更多成员):
问题:
- 如果抽象工厂只有一个创作者和一个产品,那还是抽象工厂模式吗? (创建家庭的界面)
- 工厂方法具体创建者可以从接口创建还是必须从类创建? (类将实例化推迟到子类)
- 如果抽象工厂只能有一个创建者和一个产品,那么抽象工厂和工厂方法的唯一区别是前者的创建者是一个接口和后者的创建者是一个类?
【问题讨论】:
-
注意:当我提到接口时,我更多地考虑的是 Java 接口(具有抽象虚拟方法的抽象类)。随意澄清不同语言的抽象工厂和工厂方法之间是否存在差异。
-
这里有一个基本的区别:*.com/questions/1001767,虽然不像你问的那么具体..
-
工厂方法定义了一个方法而不是一个接口。如果你定义一个方法来创建产品和子类化,那就是工厂方法。如果你定义了一个抽象类和子类,那就是抽象工厂。
标签: design-patterns language-agnostic uml factory-method abstract-factory