在阅读MSDN时,他们提到如果一个类只有静态成员等,可能需要私有构造函数,比如Math类。但Math类实际上是一个静态类。 他们还提到“或者当一个方法被用来获得一个类的实例”时 - 我可以想象它是如何工作的,但你能给我一个例子吗?
答案 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)
“..当使用方法获取类的实例时......”是一个四人帮工厂方法设计模式: