请告诉我在C#中使用性能约束实现Singleton Design Pattern的最佳方法是什么?
答案 0 :(得分:4)
从C# in Depth转述: 在C#中实现单例模式有各种不同的方法 对于完全延迟加载,线程安全,简单且高性能的版本而言,它不是线程安全的。
最佳版本 - 使用.NET 4的Lazy类型:
public sealed class Singleton
{
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance { get { return lazy.Value; } }
private Singleton()
{
}
}
这很简单,表现也很好。如果需要,它还允许您检查是否已使用IsValueCreated属性创建实例。
答案 1 :(得分:2)
public class Singleton
{
static readonly Singleton _instance = new Singleton();
static Singleton() { }
private Singleton() { }
static public Singleton Instance
{
get { return _instance; }
}
}
答案 2 :(得分:1)
直到最近,我才知道Singleton被许多人认为是反模式,应该避免。清洁解决方案可以是使用DI或其他功能。即使你和单身人士一起去阅读这个有趣的讨论 What is so bad about singletons?