“工厂方法”设计模式

时间:2015-04-10 13:11:41

标签: c# design-patterns architecture factory

我试图理解一种非常常用的模式叫做“工厂方法”。为什么称它为“方法”?

另外,“抽象工厂”模式和“工厂方法”模式之间有什么区别?

1 个答案:

答案 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.
    }
}