標籤:
靜態初始化
public sealed class Singleton { private static readonly Singleton instance = new Singleton(); private Singleton(){} public static Singleton Instance { get { return instance; } } }
Double-Check Locking 兩次檢查鎖定
public sealed class Singleton { private static volatile Singleton instance; private static object syncRoot = new Object(); private Singleton() {} public static Singleton Instance { get { if (instance == null) { lock (syncRoot) { if (instance == null) instance = new Singleton(); } } return instance; } } }
消極式載入
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() { }}
延伸閱讀:https://msdn.microsoft.com/zh-CN/Library/ms998558.aspx
http://www.cnblogs.com/rush/archive/2011/10/30/2229565.html
(轉)設計模式_Singleton單例模式