版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 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;
}
}
}