模式動機:對於系統中的某些類而言,確保只有乙個例項執行很重要,例如乙個系統只能有乙個計時器或者id生成器。
模式定義(singleton pattern):確保乙個類只有乙個例項,並且該類自己負責建立它自己的唯一例項,而且還必須可以向系統提供這個例項。
模式結構圖:
模式分析:單例類擁有乙個私有建構函式,確保使用者無法通過new關鍵字建立它;模式中包括乙個靜態工廠方法和乙個靜態(確保唯一性)私有變數,該靜態方法:
1> 負責例項化自己,然後儲存到靜態變數中;
2> 提供系統可訪問的介面。
模式**:
bt_單例模式.h:
#ifndef sp_h
#define sp_h
#include using namespace std;
/* 單例類
*/class singleton
return instance;
}private:
singleton() // private構造確保客戶不能new
private:
static singleton* instance; // static確保唯一性
};singleton* singleton::instance = null;
#endif // sp_h
bt_原型模式.cpp:
#include "bt_單例模式.h"
int main()
模式優缺點:提供給系統乙個唯一的例項,記憶體中永遠只有乙個物件,節約空間資源。同時也可以設計例項數目可控的單例擴充套件模式。缺點是單例類既是工廠又是產品,違背了「單一職責原則」。 建立型模式 單例模式
餓漢式 package com.hfview.designmode.signle 1.餓漢式 就是在初始化成員變數的時候就獲取例項物件 2.public class signlemode private signlemode 懶漢式 package com.hfview.designmode.sig...
建立型模式 單例模式
概述 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。適用性 當類只能有乙個事例而且客戶可以從乙個眾所周知的訪問點訪問它時。當這個唯一事例應該是通過子類化可擴充套件的,並且客戶應該無需更改 就能使用乙個擴充套件的例項時。參與者 singleton 定義乙個instance操作,允許客戶訪問它...
建立型模式 單例模式
1.乙個類只能建立乙個物件 2.應用 主要應用與資料庫應用,可以避免大量的new操作消耗資源 3.uml類圖 user 何曉巨集 date 2018 9 27 time 15 48 namespace singleton class singleton 判斷 instance是否為空,為空則新建乙個...