c# – 使用公共构造函数的单例模式

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();

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

谢谢

解决方法

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

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

来自维基百科Singleton Pattern文章

In software engineering,the singleton
pattern is a design pattern that is
used to restrict instantiation of a
class to one object.

Ward Cunningham’s pattern repository开始:

A Singleton is the combination of two
essential properties:

  • Ensure a class only has one instance
  • Provide a global point of access to it

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

有关实际的实现,请参阅我的singleton article.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...