單例模式是一種物件建立模式。
singleton(單例);
提供了對唯一例項的受控訪問。單例類封裝了它的唯一例項,所以它可以嚴格控制客戶怎樣以及何時訪問它。
由於在系統記憶體中只存在乙個物件,因此可以節約系統資源,對於一些需要頻繁建立和銷毀的物件,單例模式無疑可以提高系統的效能。
允許可變數目的示例。基於單例模式,開發人員可以進行擴充套件,使用與控制單例物件相似的方法來獲得指定個數的例項物件,既節省系統資源,又解決了單例物件共享過多有損效能的問題。
單例模式中沒有抽象層,因此單例類的擴充套件有很大的困難。
單例類的職責過重,在一定程度上違背了單一職責的原則。
系統只需要乙個例項物件。例如:系統要求提供乙個唯一的序列號生成器或者資源管理器,又或者需要考慮資源消耗太大而只允許建立乙個物件。
客戶呼叫類的單個例項只允許使用乙個公共訪問點,除了該公共訪問點,不能通過其他途徑訪問該例項。
1、單例模式應用場景非常的多,對它最直接簡單的描述就是:全域性唯一。
2、單例模式要保證的點:
無論是多少個執行緒還是多少人訪問,獲得的物件都是同乙個。
同時必須考慮效能和儲存
3、實現單例模式的基本步驟
私有化變數
私有化構造方法
提供公開的獲取變數的方法
4、實現單例模式的**有很多種,這裡舉例最常見的三種,也就是例子中描述的三種
餓漢式(eager):直接靜態初始化變數,適用於訪問量平凡(飢餓)
懶載入(lazyload):獲取物件時才初始化物件,並且用同步約束獲取物件的方法,適用於訪問量很少但是需要使用單例的情況
雙重檢查加鎖(double-checked locking):只有第一次才進行同步檢查,大大減少了getinstance的時間
參考部落格:
設計模式 單例的7種模式
1.餓漢式 類初始化時,會立即載入該物件,執行緒天生安全,呼叫效率高。2.懶漢式 類初始化時,不會初始化該物件,真正需要使用的時候才會建立該物件,具備懶載入功能。3.靜態內部方式 結合了懶漢式和餓漢式各自的優點,真正需要物件的時候才會載入,載入類是執行緒安全的。4.列舉單例 使用列舉實現單例模式 優...
設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...
設計模式 單例模式
class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...