c# - 为什么要使用 Create 方法而不是使用 "new"?

标签 c# constructor

有什么优点,什么时候适合使用静态构造函数?

public class MyClass
{
    protected MyClass()
    {
    }

    public static MyClass Create()
    {
        return new MyClass();
    }
}

然后通过

创建类的实例
MyClass myClass = MyClass.Create();

与仅拥有公共(public)构造函数并使用

创建对象相反
MyClass myClass = new MyClass();

如果 Create 方法返回类实现的接口(interface)实例,我可以看到第一种方法很有用……它将强制调用者创建接口(interface)实例而不是特定类型。

最佳答案

这就是工厂模式,它经常被用来产生一个子类,但是允许静态方法的参数决定是哪一个。

如果并不总是需要新对象,例如在池实现中,也可以使用它。

如果对象的所有实例都需要缓存或以其他方式在创建时注册,也可以使用它。这可确保客户不会忘记这样做。

当然,它是单例模式的重要组成部分。

关于c# - 为什么要使用 Create 方法而不是使用 "new"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/876095/

相关文章:

c# - WPF 全局类 MVVM

c# - 有没有更好的方法来编写以下 Linq 查询

c++ - 奇怪的对象分配行为 c++

c# - 构造函数执行前的属性初始化

c# - 作为委托(delegate)的构造函数 - 在 C# 中是否可能?

C# 数学,碰撞检测,xna

C# 内存屏障

c# - 如何解决此 Microsoft.Office.Excel 方法调用中的歧义?

java - 构造函数的参数类型与数据字段不同

java - 静态方法(main)如何能够捕获非静态方法(构造函数)并执行它?