单一模式与公共构造函数

Gop*_*opi 3 c# singleton

public class MySingletonClass
{
  public MySingletonClass()
  {
    _mySingletonObj = Instance();
  }

  public static MySingletonClass Instance()
  {
    if (_mySingletonObj  == null)
    {
      lock (typeof(lockObject))
      {
        if (_mySingletonObj  == null)
          _mySingletonObj  = new MySingletonClass();
      }
    }
    return _mySingletonObj ;
  }
}

MySingletonClass _myObj = new MySingletonClass();
Run Code Online (Sandbox Code Playgroud)

这个作为公共建设者的单身人士......?

谢谢

Jon*_*eet 14

不,它不是单身人士 - 任何人都可以创建它的多个实例.(暂且不谈已经提出的堆栈溢出问题,以及你不安全地使用双重检查锁定的事实.)

单例类型的一个显着特征是它可以防止构造其自身的多个实例.

来自维基百科Singleton Pattern文章:

在软件工程中,单例模式是一种设计模式,用于将类的实例化限制为一个对象.

来自Ward Cunningham的模式库:

Singleton是两个基本属性的组合:

  • 确保一个类只有一个实例
  • 提供全局访问点

很明显,你的单身人士无法满足这两个定义.

有关实际实现,请参阅我的单例文章.