C#單例模式
阿新 • • 發佈:2018-07-01
turn isp -s 使用 == 中比 sta 適用於 PE
前言:單例模式是我們在軟件開發中比較常用的模式之一,能很好的理解並運用對軟件的性能是有很大的幫助的。
一、最簡單的單例模式
public class Singleton { private static Singleton _instance = new Singleton(); private Singleton() { } public static Singleton GetInstance() { return _instance; } }View Code
點評:該種實現,在程序一運行就將對象加載到內存,由於靜態變量是常駐於內存不會被GC回收,故該實例化方式適用於經常使用的對象。對象一開始就被實例化了所以在多線程環境下是線程安全的。
二、雙重鎖單例模式
public class Singleton { private static object obj = new object(); private static Singleton _singletion; private Singleton() { } public static Singleton Instance { get {View Codeif (_singletion == null) { lock (obj) { if (_singletion == null) { _singletion = new Singleton(); } } }return _singletion; } } }
點評:雙重鎖,保證了在多線程環境下對字典或集合的操作是安全的,使用於緩存的讀取。
C#單例模式