【发布时间】:2015-04-10 13:11:41
【问题描述】:
我正在尝试理解一种非常常用的模式,称为“工厂方法”。为什么叫“方法”?
另外,“抽象工厂”模式和“工厂方法”模式有什么区别?
【问题讨论】:
-
@SonerGönül 你知道它为什么叫做 Method 吗?
标签: c# design-patterns architecture factory
我正在尝试理解一种非常常用的模式,称为“工厂方法”。为什么叫“方法”?
另外,“抽象工厂”模式和“工厂方法”模式有什么区别?
【问题讨论】:
标签: c# design-patterns architecture factory
之所以称为“方法”,是因为工厂本身就是类的某个方法,通常是静态方法。例如,Monster 类可以有一个名为 Create 的方法,它会创建一些 Monster 或 Monster 的子类型。
如果类Monster是抽象类并且有一个工厂方法,那么你可以称它为抽象工厂,因为你可以通过调用它的工厂方法来实例化子类型。
这一切背后的原因是您将决定返回哪个确切子类型的决定委托给工厂,具体取决于上下文或其他什么。
C# 中的示例:
public abstract class Monster {
public static Monster Create() { // "Create" could have some parameters if needed.
return new CuteMonster(); // you could change this without having to change client code.
}
}
【讨论】:
MonsterFactory,但我认为这是一个有效的选择。