当我需要静态类和只需私有构造函数?

时间:2013-08-13 13:05:33

标签: c# constructor

在阅读MSDN时,他们提到如果一个类只有静态成员等,可能需要私有构造函数,比如Math类。但Math类实际上是一个静态类。 他们还提到“或者当一个方法被用来获得一个类的实例”时 - 我可以想象它是如何工作的,但你能给我一个例子吗?

3 个答案:

答案 0 :(得分:1)

第二点是Singleton Pattern所依赖的。基本上,类可以通过使其构造函数为私有来管理它的实例化方式。如果是这样,消费者就无法做到这一点:

var obj = new MyClass();

...因为构造函数是私有的。这意味着,消费者获取此类实例的唯一方法是通过方法或属性。如:

public MyClass GetInstance() {
    return new MyClass();
}

(注意:不是Singleton,只是一个示例方法)

答案 1 :(得分:0)

如果API等的客户端不能直接实例化类(类型),则使用私有或受保护的构造函数。另一个常见的用例是Singleton模式,就像已经提到过的Simon一样:

public class MySingleton
{
 private static MySingleton _instance;

 private MySingleton() {} // private constructor

 public static MySingleton Instance
{
  get 
  {
     if (_instance == null)

        _instance = new Singleton();

     return _instance;
  }
 }
}

答案 2 :(得分:0)

“..当使用方法获取类的实例时......”是一个四人帮工厂方法设计模式:

http://en.wikipedia.org/wiki/Factory_method_pattern