天天看點

單例模式

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/u010741376/article/details/45816711

所謂單例模式就是:單例模式保證一個類僅有一個執行個體,同時這個類還必須提供一個通路該類的全局通路點。

   單例模式又分懶漢式和餓漢式:

    懶漢式:

public class Singleton
{
    
    private static Singleton singleton;//定義一個私有的靜态全局變量來儲存該類的唯一執行個體
    private static readonly object syncObject = new object();//定義一個隻讀靜态對象且這個對象是在程式運作時建立的

    //防止外界執行個體化
   private Singleton(){}

   /**
    * 定義一個全局通路點 設定為靜态方法 則在類的外部便無需執行個體化就可以調用該方法
    * @return
    */
    public static Singleton GetInstance()
    {
        /**
         * //這裡可以保證隻執行個體化一次即在第一次調用時執行個體化,以後調用便不會再執行個體化 第一重 singleton == null
         */
        if (singleton == null)
        {
            lock (syncObject)
            {
                if (singleton == null)//第二重 singleton == null
                {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}
}           

餓漢式:調用的時候就被建立

public class Singleton
    {
        private static readonly Singleton singleton = new Singleton();

        private Singleton(){}

        public static Singleton GetInstance()
        {
            return singleton;
        }
    }
}           

繼續閱讀