單例模式及c 實現

2021-06-21 05:58:26 字數 1008 閱讀 5625

昨天面試**,面試官讓我寫個單例模式,一時語塞。慚愧設計模式沒看好,回來研究了一下,在單例模式建構函式是可以private的,用靜態成員函式getinstance來獲得例項。

單例模式:作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。

單例模式的要點有三個;一是某個類只能有乙個例項;二是它必須自行建立這個例項;三是它必須自行向整個系統提供這個例項。在下面的物件圖中,有乙個"單例物件",而"客戶甲"、"客戶乙" 和"客戶丙"是單例物件的三個客戶物件。可以看到,所有的客戶物件共享乙個單例物件。而且從單例物件到自身的連線線可以看出,單例物件持有對自己的引用。

一些資源管理器常常設計成單例模式。讓乙個類產生同乙個物件對客戶端服務的時候,比如管理資料庫連線,管理檔案io等,這時我們就要使用到單例模式。下面是該模式的c++實現(注澤說明)

#include

using namespace std;    

//單例類的c++實現    

class singleton    

;

//構造方法實現    

singleton::singleton()

void singleton::setvar(int var)

//main

int main(int argc, char* argv)

{

singleton *ton1 = singleton::getinstance();

singleton *ton2 = singleton::getinstance();

cout<<"ton1 var = "cout<<"ton2 var = "輸出如下:

singleton constructor

ton1 var = 20

ton2 var = 150

在輸出結果中,構造方法只呼叫了一次,ton1與ton2是指向同乙個物件的。

單例模式及C 實現

我們都很清楚乙個簡單的單例模式該怎樣去實現 建構函式宣告為private或protect防止被外部函式例項化,內部儲存乙個private static的類指標儲存唯一的例項,例項的動作由乙個public的類方法代勞,該方法也返回單例類唯一的例項。上 class singleton private s...

C 實現單例模式

給所需要進行單例的類ctest的建構函式宣告為private或者protected 防止在類外隨意生成ctest的物件 然後宣告乙個靜態成員變數 instance 乙個靜態成員函式getinsance staticctest getinstance staticctest instance 靜態成員...

C 實現單例模式

ifndef singleton h define singleton h include include using namespace std class locker inline locker inline void lock inline void unlock private pthre...