0

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

4

3 回答 3

1

第二点是单例模式所依赖的。基本上,一个类可以通过将其构造函数设为私有来管理它的实例化方式。当它这样做时,消费者不能这样做:

var obj = new MyClass();

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

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

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

于 2013-08-13T13:10:30.637 回答
0

如果 API 等的客户端不应直接实例化类(类型),则使用私有或受保护的构造函数。另一个常见的用例是单例模式,就像前面提到的 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;
  }
 }
}
于 2013-08-13T13:13:07.103 回答
0

“..when method is used to get an instance of class...”是四人工厂方法设计模式:

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

于 2013-08-13T13:34:11.390 回答