c# - "Factory Method"设计模式

标签 c# design-patterns architecture factory

我正在尝试理解一种非常常用的模式,称为“工厂方法”。为什么叫“方法”?

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

最佳答案

之所以称为“方法”,是因为工厂本身就是类的一些方法,通常是静态方法。例如,类 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/

相关文章:

c# - 在同一解决方案中混合使用 F# 和 C# 的模式

python - 多个子域,通用路由模式

c# - asp.net mvc 和 Controller 服务架构

ruby-on-rails - rails + Stripe : where to store what type of subscription a user has?

c# - 使用jquery ajax上传文件

c# - 通过引用传递的参数何时更新?

c# - 如何知道 guest 用户是否正在运行应用程序 - C#?

ruby-on-rails - 在 Rails 中将继承转换为组合

java - 为什么当可观察对象作为新线程运行时观察者没有收到通知?

architecture - 单个数据库与多个数据库 - 微服务架构