意圖:保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
實用性:1.當類只能有乙個例項而且客戶可以從乙個眾所周知的訪問點訪問它。
2.當這個唯一的例項應該是通過子類可擴充套件的,並且客戶應該無需更改**就能使用乙個擴充套件的例項時。
效果: 1.只有乙個例項,可以嚴格的控制客戶怎樣以及何時訪問。
2.縮小名空間,避免了唯一例項的全域性變數汙染名空間。
3.可以控制物件的例項個數。
**示例:這裡類是乙個人micla,世界上僅有乙個mical,只能產生乙個例項。
#ifndef _singleton_#define _singleton_
class
mical
static mical*getmical()
return
_mpmical;
}private
:
static mical*_mpmical;
////避免了不同情況例項化類物件
mical(const mical&another){}
mical& operator = (const mical&another){}
mical(){}
};#endif
實現部分:
#include #include"singleton.h
"using
namespace
std;
mical* mical::_mpmical =null;
intmain()
用mical* pmical = mical::getmical(); 實現了訪問micla 然後我們可以通過pmical訪問mical的各種屬性(假設為:身高,性別等)
之後通過delete mical::getmical(); 刪除物件。 但這樣的刪除容易被遺忘,因為new的過程是被封裝起來的。
於是通過內嵌類實現自動delete:
#ifndef _singleton_#define _singleton_
class
mical
static mical*getmical()
return
_mpmical;
}private
:
static mical*_mpmical;
////避免了不同情況例項化類物件
mical(const mical&another){}
mical& operator = (const mical&another){}
mical(){}
class
delete
~delete()
};};#endif
這就實現了singleton;
要注意的是 1.封死其他的例項化介面 2.物件刪除問題處理
設計模式之單例模式 Singleton C 實現
特點 1.建構函式 私有化,因此不能直接定義乙個該類的物件 private csingle 2.定義乙個型別為 該類本身的指標 的乙個靜態成員 static csingleton m singleinstance 3.定義乙個返回型別為 該類本身的指標 的乙個靜態成員函式 static csingl...
單件模式(單例模式)
readme 0.1 本文部分描述 head first 設計模式 旨在學習 單件模式 單例模式 的相關知識 及其應用 單件模式 1.0 單件模式的應用背景 有一些物件其實我們只需要乙個,比方說 執行緒池,快取,對話方塊,登錄檔等的物件,這都可以通過單件模式來解決 1.1 定義 確保乙個類只有乙個例...
單件模式(單例模式)
1 單件模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。2 經典的單件模式實現 public class singleton public static singleton getinstance return uniqueinstance 問題點 public static singleto...