單例類模板

2022-06-21 06:12:23 字數 1493 閱讀 4962

單例模式

需求的提出

在架構設計時,某些類在整個系統生命週期中最多只能有乙個物件存在(single instance)

如何定義乙個類,使得這個類最多只能建立乙個物件?明確建立乙個物件,必然會呼叫建構函式。

要控制類的物件數目,必須對外隱藏建構函式    

思路:-將建構函式的訪問屬性設定為private

-定義instance並初始化為null

-當需要使用物件時,訪問instance的值

.空值:建立物件,並用instance標記

.非空值:返回instance標記的物件

單例模式初探:

#include using

namespace

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 ...