一、前言
單例模式屬于六大創建型模式,即在軟件設計過程中,主要關注創建對象的結果,并不關心創建對象的過程及細節。創建型設計模式將類對象的實例化過程進行抽象化接口設計,從而隱藏了類對象的實例是如何被創建的,封裝了軟件系統使用的具體對象類型。
六大創建型模式包括:單例模式、原型模式、工廠方法模式、建造者模式、簡單工廠模式、抽象工廠模式。
二、模式定義
確保一個類只有一個實例,并提供全局訪問點。
?? 核心特點:
-
私有化構造函數(防止外部
new
實例) -
靜態方法獲取唯一實例
-
線程安全(多線程環境下需特殊處理)
單例模式有多種實現方式:懶漢式(Lazy Initialization)、加鎖(C++11后推薦)、雙重檢查鎖定(Double-Checked Locking)、C++11最簡寫法(Meyer's Singleton)
目前最推薦的應用是Meyer's Singleton。其UML類圖表示如下:
-
-
表示私有成員 -
+
表示公有方法 -
static
表示靜態成員