設計模式 單例模式

2021-09-06 17:21:07 字數 769 閱讀 9872

所謂單例模式,就是禁止使用者**例項化多個物件例項,保證單例物件的類僅僅有乙個例項存在。通過乙個函式介面取用這個唯一例項,就

可以控制對該

例項的訪問。以下是乙個用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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...