C 設計模式 單例模式

2022-09-23 13:06:08 字數 4096 閱讀 4708

單例模式餓漢式.cpp

//

餓漢式 即類產生的時候就建立好例項化物件,這是一種空間換時間的方式

#includeusing

namespace

std;

class

singleton

; singleton(

const singleton&);

singleton& operator=(const singleton&);

~singleton() ;

static singleton myinstance; //

單例物件在這裡!

public

:

static singleton*getinstance()

};singleton singleton::myinstance;

intmain()

//輸出

//單例物件建立!

//單例物件銷毀!

單例模式餓漢式記憶體洩漏手動釋放版本版.cpp

#includeusing

namespace

std;

class

singleton

; singleton(

const singleton&);

singleton& operator=(const singleton&);

~singleton() ;

static singleton* myinstance; //

這裡改了!

public

:

static singleton*getinstance()

static

void

releaseinstance()

};singleton* singleton::myinstance = new

singleton();

intmain()

//輸出

//單例物件建立!

//單例物件銷毀!

單例模式餓漢式gc機制.cpp

#includeusing

namespace

std;

class

singleton

; singleton(

const singleton&);

singleton& operator=(const singleton&);

~singleton() ;

static singleton*myinstance;

public

:

static singleton*getinstance()

private

:

//定義乙個內部類

class

gc ;

~gc()}};

//定義乙個內部類的靜態物件

//當該物件銷毀時,順帶就釋放myinstance指向的堆區資源

static

gc m_garbo;

};singleton* singleton::myinstance = new

singleton();

singleton::gc singleton::m_garbo;

//注意這裡!!

intmain()

//輸出

//單例物件建立!

//單例物件銷毀!

單例模式餓漢式智慧型指標.cpp

#include#include

using

namespace

std;

class

singleton

; singleton(

const singleton&);

singleton& operator=(const singleton&);

~singleton() ;

static

void destory(singleton*) ;//

注意這裡

static shared_ptrmyinstance;

public

:

static shared_ptrgetinstance()

};shared_ptr

singleton::myinstance(new

singleton(), singleton::destory);

intmain()

//輸出

//單例物件建立!

//在這裡銷毀單例物件!

單例模式懶漢式.cpp

//

餓漢式 即在需要的時候,才建立物件,這是一種時間換空間的方式

#includeusing

namespace

std;

class

singleton

; singleton(

const singleton&);

singleton& operator=(const singleton&);

~singleton() ;

public

:

static singleton*getinstance()

};int

main()

//輸出

//單例物件建立!

//單例物件銷毀!

單例模式懶漢式gc機制.cpp

#include#include

using

namespace

std;

class

singleton

; singleton(

const singleton&);

singleton& operator=(const singleton&);

~singleton() ;

static singleton*myinstance;

public

:

static singleton*getinstance()

return

myinstance;

}private

:

//定義乙個內部類

class

gc ;

~gc()}};

//定義乙個內部類的靜態物件

//當該物件銷毀時,順帶就釋放myinstance指向的堆區資源

static

gc m_garbo;

};singleton* singleton::myinstance =nullptr;

singleton::gc singleton::m_garbo;

intmain()

//輸出

//單例物件建立!

//單例物件銷毀!

單例模式懶漢式gc機制多執行緒.cpp

#include using

namespace

std;

#include

class

singleton //

建構函式

static singleton*m_psingleton;

static mutex m_mutex; //

鎖public

:

static singleton*getinstance()

}return

m_psingleton;

}private

:

//gc機制

class

gc ~gc() }};

static

gc gc;

};singleton* singleton::m_psingleton =nullptr;

singleton::gc singleton::gc;

mutex singleton::m_mutex;

//注意這裡一定要寫

intmain()

//輸出

//單例物件建立!

//在這裡銷毀單例物件

設計模式 C 設計模式 單例模式

設計模式 物件導向設計七大原則 設計模式 設計模式概念和分類 設計模式 c 設計模式 單例模式 設計模式 c 設計模式 工廠方法模式 設計模式 c 設計模式 抽象工廠模式 設計模式 c 設計模式 建造者模式 設計模式 c 設計模式 原型模式 作者自用的泛型單例模組 單例模式 singleton pa...

C 設計模式 (單例模式)

單例模式 顧名思義,只有乙個物件例項,即保證乙個類只有乙個物件可以使用。作用類似於乙個全域性變數,可以任意呼叫,但是比全域性變數更容易管理,使用。單例模式也有很多種實現方式 第一種實現方法 h檔案 class csock test public casyncsocket cpp檔案 csock te...

設計模式 單例模式(c )

在gof 設計模式 中,單例模式的定義為 保證乙個類僅有乙個例項,並提供乙個該例項的全域性訪問點。下面是單例模式的c 實現 方案一 建構函式和拷貝建構函式一定要宣告為private 定義static成員 單例指標和獲取單例指標的函式 static單例指標要在類外定義並初始化 實現獲取單例指標的函式時...