日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++设计模式:单例模式

發布時間:2024/1/17 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++设计模式:单例模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.設計思想:

  單例模式,顧名思義,即一個類只有一個實例對象。C++一般的方法是將構造函數、拷貝構造函數以及賦值操作符函數聲明為private級別,從而阻止用戶實例化一個類。那么,如何才能獲得該類的對象呢?這時,需要類提供一個public&static的方法,通過該方法獲得這個類唯一的一個實例化對象。這就是單例模式基本的一個思想。

2.分類:

  1).懶漢式:用的時候才加載,在類的public,getInstance方法中創建對象,場景就是可能有不用的情況,需要通過手動加鎖實現線程安全。

  2).餓漢式:該實例對象需要存儲在內存的全局數據區,故使用static修飾,程序開始時,全局變量就會初始化。場景就是肯定會實例化,本身就是線程安全。

 1.經典懶漢模式:(new)

class singleton { protected:singleton(){pthread_mutex_init(&mutex);} private:static singleton* p; public:static pthread_mutex_t mutex;static singleton* initance(); };pthread_mutex_t singleton::mutex; singleton* singleton::p = NULL; singleton* singleton::initance() {if (p == NULL){pthread_mutex_lock(&mutex);if (p == NULL)p = new singleton();pthread_mutex_unlock(&mutex);}return p; }

2.懶漢模式(靜態變量)

class singleton { protected:singleton(){pthread_mutex_init(&mutex);} public:static pthread_mutex_t mutex;static singleton* initance();int a; };pthread_mutex_t singleton::mutex; singleton* singleton::initance() {pthread_mutex_lock(&mutex);static singleton obj;pthread_mutex_unlock(&mutex);return &obj; }

3.餓漢模式

class singleton { protected:singleton(){} private:static singleton* p; public:static singleton* initance(); }; singleton* singleton::p = new singleton; singleton* singleton::initance() {return p; }

?

  

轉載于:https://www.cnblogs.com/mcy0808/p/10831575.html

總結

以上是生活随笔為你收集整理的c++设计模式:单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。