一、目的:為了保證應用該模式的類只有乙個例項,即乙個類只有乙個物件例項。
二、要點:
1、某個類只能有乙個例項
2、必須自行建立這個例項
3、必須自行向整個系統提供這個例項
三、實現角度:
1、單例模式的類只提供私有的建構函式
2、類定義中含有乙個該類的靜態私有物件
3、該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件。
四、應用場景
1.需要頻繁例項化然後銷毀的物件。
2.建立物件時耗時過多或者耗資源過多,但又經常用到的物件。
3.有狀態的工具類物件。
4.頻繁訪問資料庫或檔案的物件。
五、例項(c# 為例)
1、雙if判斷加鎖
public class singleton
}return _instance;
}private singleton()
}
2、利用靜態建構函式的特性
public class singleton
public static singleton createinstance()
/// /// 私有建構函式
///
private singleton()
}
3、更簡單的一種方式,利用靜態變數的特性
public class singleton
//靜態變數:在型別第一次使用時初始化,並且只會初始化一次
private static singleton _instance = new singleton();
private static object singleton_lock = new object();
public static singleton createinstance()
}
有寫的不好或理解有誤的地方,歡迎指正!
設計模式學習筆記 單例模式
定義 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例模式的通用類圖如下 如下 public class singleton public static singleton getinstance public void dosomething 這裡需要注意幾個地方 1 要定義...
設計模式學習筆記(單例模式)
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式是對全域性變數的一種改進。全域性變數空間利用率比較低,且在專案中是乙個不安全隱患,特別是在多執行緒程式中,會有很多的不可 性 同時,使用全域性變數,也不符合物件導向的封裝原則。1 基礎版本 include using namespace...
設計模式 單例模式(學習筆記)
經典單例模式原理 1 單例模式 確保乙個類最多只有乙個例項,並提供乙個全域性訪問點 2 單例模式的意義 有些物件我們只需要乙個 執行緒池,快取,硬體設別等。如果多個例項會造成衝突 結果的不一致性等問題。使用靜態不變數方式來實現,或者使用全域性變數。3 單例模式類圖 經典單例模式存在的問題 改進方案 ...