Singleton模式的乙個實現

2021-04-07 06:17:23 字數 577 閱讀 5143

設計模式上的singleton模式是宣告了乙個static的singleton指標,當getinstance被呼叫的時候再new出乙個物件然後賦值給這個指標。然而這樣會有乙個問題,即這個new出來的物件應該何時釋放?如果只是記憶體沒有釋放問題還不大,但是如果這個singleton還占有資源,而程式退出還沒有釋放就會有問題了。

這裡有乙個singleton的實現:

class csingleton

~csingleton()

public:

static csingleton* getinstance()

};這樣,當程式結束時就會呼叫這個singleton的解析函式。而且由於instance是個區域性變數,如果getinstance沒有呼叫,instance物件也不會被初始化。

下面是測試程式:

int _tmain(int argc, _tchar* argv)

輸出結果是:

start!

singleton contructed!

end!

singleton destructed!

可以看出這種singleton實現比較有優勢。

設計模式之(Singleton)模式的幾種實現

這種實現方法,優點是實現簡單,缺點是在多執行緒頻繁訪問下效率比較低,經常出現鎖競爭。適應於不需要頻繁訪問例項的情況下。class singleton private singleton singleton const singleton singleton operator const single...

Singleton模式與在Ogre中的實現

singleton 模式的用意是對於乙個 class 全域性只能建立乙個例項。常規的做法是把建構函式藏起來,然後通過靜態方法返回唯一的乙個靜態例項。class singleton protected singleton 如果我們想讓 singleton 的子類也具有唯一性,只需要在 getinsta...

Singleton模式與在Ogre中的實現

singleton模式的用意是對於乙個class全域性只能建立乙個例項。常規的做法是把建構函式藏起來,然後通過靜態方法返回唯一的乙個靜態例項。class singleton protected singleton 如果我們想讓singleton的子類也具有唯一性,只需要在getinstance中根據...