昨天面試**,面試官讓我寫個單例模式,一時語塞。慚愧設計模式沒看好,回來研究了一下,在單例模式建構函式是可以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...