學習單例模式(C 實現)

2021-06-23 03:19:54 字數 950 閱讀 4551

單例模式:又稱單件模式,單子模式。是建立型模式的一種。

作用:1)使類僅有乙個例項,2)並提供乙個全域性的對該例項的訪問點。

單例模式的最直觀實現是使用全域性變數,即定義乙個全域性例項。但這樣無法保證該類只有乙個例項,即除了全域性例項,本地依然可以建立該類的例項。

實現:由於例項化物件是由建構函式完成的,因此如果將建構函式封裝進private,外界想獲取例項只能通過public函式 getinstance()返回指向該例項的指標。

簡單**:

1)懶漢型(之所以叫懶漢型,是因為直到第一次getinstance被呼叫,」單例物件「都沒有被建立)

class csingleton

private:

csingleton()

class garbo

};private:

static csingleton * m_pinstance;

static garbo garbo;

};

其中garbo類為私有內嵌類,並例項化乙個靜態static物件。(why static?因為一條程式結束時,會處理所有全域性變數和靜態變數,包括類的靜態成員),因此會自動呼叫garbo類的析構函式,其析構函式只有乙個任務:釋放單例。

2)餓漢型(不管有沒有呼叫,我先把例項建立好了放在那裡)

class csingleton

private:

csingleton()

static csingleton m_inctance;

};

最後,別忘了在使用前先對這個例項提供乙個全域性訪問點。類似這樣:

csingleton * csingleton::m_pinstance = 0;

int main(void)

C 實現單例模式

給所需要進行單例的類ctest的建構函式宣告為private或者protected 防止在類外隨意生成ctest的物件 然後宣告乙個靜態成員變數 instance 乙個靜態成員函式getinsance staticctest getinstance staticctest instance 靜態成員...

C 實現單例模式

ifndef singleton h define singleton h include include using namespace std class locker inline locker inline void lock inline void unlock private pthre...

C 實現單例模式

class singleton 私有建構函式 singleton const singleton 拷貝建構函式,只宣告不定義,這要當使用者或友元想要拷貝構造該類的已存在例項時會出錯。singleton operator const singleton 賦值運算子,只宣告不定義,作用同上 public...