所謂單例模式,就是禁止使用者**例項化多個物件例項,保證單例物件的類僅僅有乙個例項存在。通過乙個函式介面取用這個唯一例項,就
可以控制對該
例項的訪問。以下是乙個用c++編寫的模擬單例模式的樣例。
#include #include using namespace std;
class singleton
string get()
void set(const string &rhs)
private:
string m_str;};
// 當getinstance沒有被呼叫時,靜態物件single不會被例項化
singleton& getinstance()
int main()
執行結果:
在上面的樣例中,我在getinstance函式內部定義了乙個靜態物件single,這樣就抑制了多個singleton例項的生成。當使用者**沒有呼叫getinstance函式時,single物件不會被例項化;當使用者**第一次呼叫getinstance函式時,例項化乙個新的single物件並返回給使用者程式;當使用者**再次呼叫getinstance函式時,僅僅會返回原有的那個single物件,從而達到單例模式的效果。在main函式中,single1和single2獲得的是同乙個物件例項,所以對single1物件的改動會反應到single2物件身上。注意,上述**在多執行緒環境下是不安全的。能夠使用相互排斥鎖解決該問題。
參考:《effective c++》條款04。
設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...
設計模式 單例模式
class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...
設計模式 單例模式
單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...