網上有很多關於設計模式的,本人也寫了乙個,博此一笑,勿噴。
設計模式是經驗積累下,總結出來的很實用和好用的模式。其中單例模式,是最常用的設計模型之一,它適用於在全域性保持乙個例項的情況。比如在資料庫連線中,由於遠端的資料庫每次連線都要消耗大量的資源,故而我們可以設計乙個單例的類來進行資料庫的連線管理,全域性只儲存乙個資料庫的例項,也保證只在資料庫沒有連線的情況下進行連線,其他情況直接進行使用即可。
c++的單例模式設計如下:
標頭檔案:
class csingleton
public:
staticcsingleton* getinstance();(2)
~csingleton();
private:
csingleton();(1)
private:
staticcsingleton* m_instance;(3)
注意事項:1、建構函式保證為私有,防止在外部隨意例項化,保證只能例項化乙個。
2、乙個靜態的共有方法,目的的獲取共有的單例例項。
3、靜態的例項物件。
實現檔案:
csingleton* csingleton::m_instance = null;
csingleton::csingleton()
//資料庫連線方法
csingleton::~csingleton(void)
deletem_instance;
m_instance= null;
csingleton* csingleton::getinstance()
if(null == m_instance)
m_instance= new csingleton;
returnm_instance;
注意事項:
1、 必須初始化私有的靜態例項為null。
2、 在靜態的共有獲取例項方法中,判斷唯一例項是否為空,為空的進行例項化,否則返回已有例項。
至此,乙個單例例項已經完成。但仍需注意乙個問題,唯一例項物件的釋放,在析構函式中可以進行釋放,但析構函式的呼叫是在靜態例項被刪除的時候,也就是在程式退出的時候。若要在程式中的某個時刻進行釋放,則需要使用者手動進行。或則,也可以研究一種自動進行記憶體管理的機制,有待進步一**。
C 設計模式之單例
單例模式讓乙個類僅有乙個例項,並提供訪問它的全域性訪問點。單例模式的實現通常如下 public class singleton public static singleton getinstance return singleton 然而在多執行緒情況下,各個執行緒同時呼叫getinstance 方...
C 設計模式之單例模式
在遊戲開發過程中,我們時常會遇到單例模式的運用場景。比如你遊戲當中的最終boss,你希望你的boss只能有乙個,所以這裡你就可以用單例模式 那麼什麼是單例模式呢?看下面的 分析。include include using namespace std class singleton public st...
C 設計模式之單例模式
設計模式是以理論的高度,總結了開發過程中的一多種不同的方法,在各種設計模式中,它們都有著不同實現方式,所起的作用也不相同,我最近看了部分設計模式,主要是以我自己的理解來闡述對它們的看法。我們可以看到單例的大概實現是很簡單的。幾個需要注意的地方是 只有當我們的建構函式為私有時,此時,我們在類外部就不能...