我什么时候想用私人ctor建模?

Gur*_*epS 2 c# oop

可能重复:
C#中私有构造函数的需求是什么?

嗨,

我已经在.NET中看到很多具有私有构造函数的类(我认为Stream就是其中之一).我什么时候想要为这样的类建模?

我一直在想,如果我的类没有内部状态/字段,那么我可以让它有一个私有构造函数.

这个想法我在正确的轨道上吗?我可以理解工厂的使用(我已经进入了几次临界点),但没有使用私有构造函数类.

谢谢

Ani*_*Ani 9

私有构造函数通常用于:

  1. 构造函数链接 - 作为同一类中其他构造函数的目标.
  2. 控制构造 - 有时,类的所有构造函数都是私有的:
    1. 强制执行单例模式.
    2. 只允许通过静态工厂方法进行施工.
    3. 只允许嵌套类(如果有)继承它.

我在.NET中看到过很多具有私有构造函数的类(我认为Stream是其中之一)

System.IO.Stream不是任何一个例子 - 它有一个受保护的构造函数(至少从.NET 4.0开始).由于它是一个抽象类,因此拥有公共构造函数是没有意义的.

我一直在想,如果我的类没有内部状态/字段,那么我可以让它有一个私有构造函数.

在这种情况下,请考虑创建一个静态类,根本不提供任何实例构造函数(静态类不能具有实例构造函数,因为无法创建实例).当然,有些情况下,尽管缺少任何状态,例如当类必须实现接口时,这可能不合适.