單例模式
需求的提出
在架構設計時,某些類在整個系統生命週期中最多只能有乙個物件存在(single instance)
如何定義乙個類,使得這個類最多只能建立乙個物件?明確建立乙個物件,必然會呼叫建構函式。
要控制類的物件數目,必須對外隱藏建構函式
思路:-將建構函式的訪問屬性設定為private
-定義instance並初始化為null
-當需要使用物件時,訪問instance的值
.空值:建立物件,並用instance標記
.非空值:返回instance標記的物件
單例模式初探:
#include usingnamespace
std;
class
sobject
public
:
static sobject* getinstance();//
使用乙個靜態成員函式,讓其返回物件
列印結果是相同的,說明三個指標指向了同乙個物件。注意單例模式中是不需要釋放物件的
存在的問題(只是不夠完美,下面要做的僅僅是錦上添花的事情)
-需要使用單例模式時:
必須定義靜態變數c_instance
必須定義靜態成員函式getinstance()
解決方案:
將單例模式相關的**抽取出來,開發單例類模板。當需要單例類時,直接使用單例類模板。
#ifndef _singleton_h_#define _singleton_h_template
< typename t >
class
singleton
;template
< typename t >t* singleton::c_instance =null;
template
< typename t >t* singleton::getinstance()
return
c_instance;
}#endif
#include #include#include
"singleton.h
"using
namespace
std;
class
sobject
public
:
void
print()
};int
main()
單例類模板
需求的提出 在架構設計時,某些類在整個系統生命期中最多只能有乙個物件存在 single instance 問題 如何定義乙個類,使得這個類最多只能建立乙個物件?要控制類的物件數目,必須對外隱藏建構函式。思路如下 程式設計實驗 單例模式初探 include include using namespac...
單例類模板
單例模式 類在系統生命週期中只有乙個物件存在 思路 將建構函式設為私有。建立乙個標記,用於指示物件的個數,多於乙個返回已經建立了的物件,少於乙個則建立乙個。單例類模板的實現 include include using namespace std class sobject public static...
C 單例模板類
單例模式 singleton 是設計模式常見的一種,其目的是保證 系統中只存在某 類的唯一例項 物件 在 應用程式中,經常用於配置,日誌等的處理。使用單例模板類可以很容易地實現單例模式。如下 templateclass csingleton return m pinstance protected ...