1. 程式人生 > 其它 >Python3新特性總結 -- 持續更新

Python3新特性總結 -- 持續更新

概念:單例模式的意思就是隻有一個例項。單例模式確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。

注意點:一是某個類只能有一個例項;二是它必須自行建立這個例項;三是它必須自行向整個系統提供這個例項。

貼上程式碼 下面有兩個方法 一個是不帶驗證的建立單例物件 第二個是防止非同步執行緒呼叫該方式時 造成多個單例物件被建立的情況

  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();
                }));
            }