什麼是單例模式

2021-10-02 19:45:54 字數 1460 閱讀 1185

1.保證類在記憶體中只能建立乙個物件

1.餓漢模式:程式啟動時就建立唯一物件

2.懶漢模式:用的時候才建立物件

餓漢模式(不會出現問題)

懶漢模式(可能會出現問題)

(1)延遲載入

(2)執行緒安全問題

(3)是多執行緒環境

(4)是有共享資料

(5)有多條語句操作共享資料

餓漢模式:

1.建立唯一物件首先要禁用建構函式,將建構函式宣告為私有

2.定義靜態成員變數,在類內有靜態成員函式呼叫

3.為防止通過拷貝建構函式,賦值過載運算子建立物件,將他們也要宣告稱私有

*優點:*實現簡單,安全

缺點:可能導致程序啟動慢,如果有多個單例類物件例項啟動,不確定順序

class

singleton

private

:singleton()

singleton

(const singleton&)=

delete

;static singleton m_ins;

//靜態成員變數須在類外定義};

intmain()

懶漢模式:

在第一次使用類時建立物件

//懶漢模式 第一次使用時建立 延遲載入

#include

#include

#include

using

namespace std;

class

slingleton

m_mutex.

unlock()

;}return m_pins;

}classgc}

};private

:slingleton()

slingleton

(const slingleton &)=

delete

; slingleton &

operator=(

const slingleton &)=

delete

;static

volatile slingleton* m_pins ;

static mutex m_mutex;

static gc m_gc;

//靜態成員變數在程式結束時銷毀,m_gc在程式結束時析構函式釋放new開闢的空間};

volatile slingleton* slingleton::m_pins =

nullptr

;mutex slingleton::m_mutex;

slingleton::gc m_gc;

void

treadfunc()

void

test()

intmain()

什麼是單例模式

1.單例模式只能有乙個例項。2.單例類必須建立自己的唯一例項。3.單例類必須向其他物件提供這一例項。第一步 將類的建構函式生命為私有的建構函式,這樣我們在外部就無法通過singleton s new singleton 來例項化該,因為private生命的成員只有在該類的內部可以訪問。這樣可以保證類...

什麼是單例模式

1.保證類在記憶體中只能有乙個物件 1.懶漢式 類一載入就建立物件 2.餓漢式 用的時候,才去建立物件 相關經驗 餓漢式 是不會出現問題的單例模式 懶漢式 可能會出現問題的單例模式 1.懶載入 延遲載入 2.執行緒安全問題 1.是否多執行緒環境 是 2.是否有共享資料 是 3.是否有多條語句操作共享...

什麼是單例模式

單例模式,顧名思義就是乙個類只有乙個例項,並且類負責建立自己的物件,這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。從物件導向的角度講 雖然都能實現目的,但是他們乙個是基於物件,乙個是物件導向的,就像我們不面相物件也能解決問題一樣,面相物件的 提供乙個更好的程式設計思想...