設計模式C 之單例

2021-06-25 15:19:42 字數 1118 閱讀 3793

網上有很多關於設計模式的,本人也寫了乙個,博此一笑,勿噴。

設計模式是經驗積累下,總結出來的很實用和好用的模式。其中單例模式,是最常用的設計模型之一,它適用於在全域性保持乙個例項的情況。比如在資料庫連線中,由於遠端的資料庫每次連線都要消耗大量的資源,故而我們可以設計乙個單例的類來進行資料庫的連線管理,全域性只儲存乙個資料庫的例項,也保證只在資料庫沒有連線的情況下進行連線,其他情況直接進行使用即可。

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 設計模式之單例模式

設計模式是以理論的高度,總結了開發過程中的一多種不同的方法,在各種設計模式中,它們都有著不同實現方式,所起的作用也不相同,我最近看了部分設計模式,主要是以我自己的理解來闡述對它們的看法。我們可以看到單例的大概實現是很簡單的。幾個需要注意的地方是 只有當我們的建構函式為私有時,此時,我們在類外部就不能...