我试图理解一种非常常用的模式叫做“工厂方法”。为什么称它为“方法”?
另外,“抽象工厂”模式和“工厂方法”模式之间有什么区别?
答案 0 :(得分:3)
它被称为"方法"因为工厂本身是一个类的一些方法,通常是静态方法。例如,类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.
}
}