c# - 静态类和具有私有(private)构造函数的实例类之间的区别

标签 c#

虽然静态类只有一个实例,不能实例化,但是有私有(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/

相关文章:

c# - 关于面向对象和库设计的几个问题

c# - c# 中的并行和工作划分?

c# - 展平 IEnumerable<string> - SelectMany 问题

c# - 使用 Json.Net 解析 JSON 时如何从 IEnumerables 中删除空值

c# - 正则表达式与预期不匹配

c# - 将数据逐行加载到每个文本框中

c# - 如何解析来自 HttpClient 的 JSON 字符串?

c# - 如何使用 LINQ 查找特定属性的副本?

c# - 听WaveOutDevice

c# - 按命名空间并行运行 ReSharper 测试