![]() |
1
30
创建一个singleton类只是几行代码,而且由于很难创建一个通用的singleton,我总是编写这些代码行。
这个
行消除了锁定的需要,因为静态构造函数是线程安全的。 |
![]() |
2
5
好吧,这不是单身的-因为你不能控制
(拆下的螺纹圈;注意重复检查的用法) |
![]() |
3
5
我删除了以前的答案,因为我没有注意到检查非公共构造函数的代码。但是,这是一个仅在执行时执行的检查-没有 编译时间 支票,这是对它的打击。它还依赖于有足够的访问权来调用非公共构造函数,这增加了一些限制。 此外,它并不禁止 内部的 构造器-这样就可以以非单例结束。 为了简单的线程安全,我个人也会在静态构造函数中创建实例。 基本上,我不太喜欢创建单例类——创建单例类很容易,而且无论如何你也不应该经常这样做。单例测试对于测试、分离等来说是一种痛苦。 |
![]() |
4
5
这是我使用.NET 4的观点
它的用途如下:
|
![]() |
5
1
合并Andreans答案和Jon Skeet's“ Fourth version - not quite as lazy, but thread-safe without using locks “对于单例C实现,为什么不使用代码片段来完成所有繁重的工作:
然后您可以将其保存到.snipt文件中,并将其添加到vs-ide(工具->代码段管理器) |
![]() |
6
0
通用的单例工厂有问题,因为它是通用的,所以您不能控制
所以, 不能创建通用的单例工厂-它会破坏模式本身。 |
![]() |
7
-1
我不认为使用仿制药对单身汉有用。因为您总是可以创建多个实例,因此 不 根据定义,一个单件。如果你需要一个懒惰的单例,并要求它是一个真正的单例,一个简单的解决方案(基于Alexandr的例子)
不能将其正确重构为单独的泛型单例。 参见: http://csharpindepth.com/Articles/General/Singleton.aspx |
![]() |
S qasem · Android内存性能 6 年前 |
![]() |
R83nLK82 · 在单例设计模式上引发IOException 6 年前 |
![]() |
hal · 两个课程有什么区别?他们的工作方式不同吗? 6 年前 |
![]() |
Jaquarh · 如何在不使用DI的情况下实例化父类 6 年前 |
|
Deepanshu · 基于PHP的Web应用程序中的单例对象状态 6 年前 |
![]() |
dicle · 视图控制器中的依赖项注入 6 年前 |
![]() |
Kozuki · 如何在生产代码中考虑单例? 6 年前 |