單例模式 【餓漢式、懶漢式、執行緒安全、單例資源釋放】
阿新 • • 發佈:2020-08-18
一、餓漢式單例
二、懶漢式單例
三、建立單例的執行緒安全
四、單例物件的資源釋放
編寫單例類時,往往會忽視對單例物件資源的釋放。這裡採用 “靜態物件只會建立一次,在程式退出時自動銷燬 ”以及 “ 內部類” 兩個思想,分享一種精緻的設計方案,。
///< Single.h------------------------------------ class Single { private: Single() {} ///<私有化建構函式,杜絕內外建立類物件。 static Single * m_instance;///<靜態成員 public: static Single * instance(); class AutoClearSingle ///<內部類, 用來釋放單例物件 【核心點1】 { public: ~AutoClearSingle() { if( Single::m_instance) { delete Single::m_instance; Single::m_instance = nullptr; } } }; ///< class AutoClearSingle}; ///< class Single ///< Single.cpp---------------------------------- Single * Single::m_instance = nullptr; Single * Single::instance() { if (m_instance == nullptr) { m_instance = new Single(); static AutoClearSingle autoClearSingle; ///< 【核心點2】 } return m_instance; }