設計模式上的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中根據...