C# 單例模式
阿新 • • 發佈:2017-08-09
public object 單例模式 () style private 才會 一次 第一次
1.懶漢模式(延時加載,他是在需要的時候才創建對象)
1 public class Singleton 2 { 3 private static Singleton _Singleton = null; 4 private static object Singleton_Lock = new object(); 5 public static Singleton CreateInstance() 6 { 7 //Singleton _Singleton = null; 8 if(_Singleton == null)//對象初始化之後,不要再等待鎖了 9 { 10 lock (Singleton_Lock)//保證lock的方法體同一時刻只有一個線程可以進入 11 { 12 if (_Singleton == null)//是保證第一次初始化之後,不再重復的初始化 13 { 14 _Singleton = new Singleton(); 15 }16 } 17 } 18 return _Singleton; 19 } 20 }
2.餓漢模式
1 public class Singleton 2 { 3 private static Singleton _Singleton = new Singleton();//加載類即實例化 4 5 public static Singleton CreateInstance() 6 { 7 return _Singleton;8 } 9 }
public class Singleton { private static Singleton _Singleton = null; static Singleton()//類加載執行靜態構造函數 { _Singleton = new Singleton(); } public static Singleton CreateInstance() { return _Singleton; } }
懶漢和餓漢的本質區別,就是實例化對象的時機,餓漢即類加載就會實例化對象,懶漢則是使用時才會實例化
C# 單例模式