c++设计模式:单例模式
生活随笔
收集整理的這篇文章主要介紹了
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++设计模式:单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《小马哥Spring Cloud系列》十
- 下一篇: C++ Primer: 1. 初识输入和