我正在尝试理解一种非常常用的模式,称为“工厂方法”。为什么叫“方法”?
另外,“抽象工厂”模式和“工厂方法”模式有什么区别?
最佳答案
之所以称为“方法”,是因为工厂本身就是类的一些方法,通常是静态方法。例如,类 Monster
可以有一个名为 Create
的方法,它会创建一些 Monster 或 Monster 的子类型。
如果 Monster
类是抽象的并且有一个工厂方法,那么你可以称它为抽象工厂,因为你可以通过调用它的工厂方法来实例化子类型。
所有这一切背后的原因是,您将根据上下文或其他因素决定应返回哪个确切子类型的决定委托(delegate)给工厂。
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.
}
}
关于c# - "Factory Method"设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29562350/