虽然静态类只有一个实例,不能实例化,但是有私有(private)构造函数的类是不能实例化的(因为看不到构造函数),所以每次调用这个类时,this同一个实例?
工厂类总是遵循最后的约定(具有私有(private)构造函数的实例类)。这是为什么?
谢谢
最佳答案
没有什么可以阻止具有私有(private)构造函数的类拥有返回类实例的公共(public)静态方法:
public class NoPublicConstructor
{
private NoPublicConstructor()
{
}
public static NoPublicConstructor NewInstance()
{
return new NoPublicConstructor();
}
}
如您所见,静态方法不会返回同一个实例。
编辑:工厂类这样做的原因之一是为了能够在未来的版本中分离职责:虽然您的代码总是调用工厂创建方法,但作者可能会移动所有“胆量”从那个类到另一个不同的类,你的代码不需要知道区别。调用该类的(公共(public))构造函数在一定程度上将其与原始类实现联系起来。
关于c# - 静态类和具有私有(private)构造函数的实例类之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2563585/