1
4
没有什么可以阻止具有私有构造函数的类具有返回类实例的公共静态方法:
如您所见,静态方法不会返回同一个实例。 编辑: 工厂类这样做的原因之一是能够在将来的版本中分离出责任:虽然您的代码总是调用工厂创建方法,但作者可能会将该类中的所有“胆量”转移到另一个类中,而您的代码不需要知道其区别。调用该类的“(public)构造函数会将其在一定程度上与原始类实现相关联。 |
2
1
您不能*从类外部获取实例,但可以从内部获取。静态方法或内部类可以使用私有构造函数创建和返回类的实例。静态类不能由任何对象实例化。
…
编辑: *我用“不能”这个词来概括。Brian Rasmussen在对OP的注释中指出,另一个获取实例的方法是通过System.Runtime.Serialization.FormatterServices调用,而这是类本身的外部方法。
|
3
0
使用私有构造函数创建类是实现“singleton”对象的常见模式。 singleton通常会实例化它自己的一个实例,并且只允许通过静态的“instance”属性访问它,这意味着类中只有一个实例。 与纯静态类相比,使用singleton的优点是可以在singleton中使用接口和不同的实现类。您的“singleton”可能会为一组方法公开一个接口,并且您可以在封面下选择要实例化的具体实现类。如果您使用的是纯静态类,那么很难在不影响其他代码的情况下换出完全不同的实现。 singleton的主要缺点是很难将实现类换成测试类,因为它是在singleton私有方法中控制的,但是有很多方法可以解决这个问题。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |