Python3新特性總結 -- 持續更新
阿新 • • 發佈:2021-11-14
概念:單例模式的意思就是隻有一個例項。單例模式確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。
注意點:一是某個類只能有一個例項;二是它必須自行建立這個例項;三是它必須自行向整個系統提供這個例項。
貼上程式碼 下面有兩個方法 一個是不帶驗證的建立單例物件 第二個是防止非同步執行緒呼叫該方式時 造成多個單例物件被建立的情況
public class singleton { private singleton() { } private static singleton _Singleton = null; public static singleton CreateInstance() { //只有為null的時候 才能會被建立 保證整個程式只有它一個例項 但是不排除使用非同步執行緒呼叫的方法 去建立單例模式 所以呼叫以下的方法 if (_Singleton == null) { Console.WriteLine("被建立"); _Singleton = new singleton(); } return _Singleton; } } /// <summary> ///這個方法可以有效的限制 當非同步執行緒執該方法時 可能會造成多個實體被建立 /// </summary> public class Singleton { private static Singleton _Singleton = null; private static object Singleton_Lock = new object(); public static Singleton CreateInstance() { if (_Singleton == null) //雙if +lock { lock (Singleton_Lock) { Console.WriteLine("路過。"); if (_Singleton == null) { Console.WriteLine("被建立。"); _Singleton = new Singleton(); } } return _Singleton; } }
具體呼叫
//不帶驗證的建立單例模式 singleton singleton = singleton.CreateInstance(); //非同步執行緒測試單例模式哦 TaskFactory taskFactory = new TaskFactory(); List<Task> tasks = new List<Task>(); for (int i = 0; i < 5; i++) { tasks.Add(taskFactory.StartNew(()=>{ Singleton singleton1 = Singleton.CreateInstance(); })); }