單例模式作用:保證一個類只生成唯一的實例對象,也就是說,在整個程序空間中,該類只存在一個實例對象
單例模式的結構圖:
爲什麼需要單例模式:
1、在多個線程之間,比如初始化一次socket資源
2、在整個程序空間使用全局變量,共享資源
3、大規模系統中,爲了性能的考慮,需要節省對象的創建時間
實現單例模式常用步驟:
1、構造函數私有化
2、提供一個全局的靜態方法(全局訪問點)
3、在類中定義一個靜態指針,指向本類的變量的靜態變量指針
單例模式的分類及實現:
1、懶漢式
#include
using namespace std;
//懶漢式
class Singleton
{
private:
//構造函數私有化,就不能在外部創建對象
Singleton()
{
cout<<"Singleton 的構造函數"<Release();
printf("%d\n", Singleton::GetHandleCount());
s1->work();
//s2->work();
s2->Release();
printf("%d\n", Singleton::GetHandleCount());
return 0;
}
#include
using namespace std;
// 餓漢式
class Singleton
{
private:
//構造函數私有化,就不能在外部創建對象
Singleton()
{
cout<<"Singleton 的構造函數"<Release();
printf("%d\n", Singleton::GetHandleCount());
s1->work();
//s2->work();
s2->Release();
printf("%d\n", Singleton::GetHandleCount());
return 0;
}
#include
using namespace std;
#include "pthread.h"
class Singleton
{
private:
//構造函數私有化,就不能在外部創建對象
Singleton()
{
cout<<"Singleton 的構造函數"<