1. 程式人生 > 實用技巧 >單例模式 【餓漢式、懶漢式、執行緒安全、單例資源釋放】

單例模式 【餓漢式、懶漢式、執行緒安全、單例資源釋放】

一、餓漢式單例

二、懶漢式單例

三、建立單例的執行緒安全

四、單例物件的資源釋放

編寫單例類時,往往會忽視對單例物件資源的釋放。這裡採用 “靜態物件只會建立一次,在程式退出時自動銷燬 ”以及 “ 內部類” 兩個思想,分享一種精緻的設計方案,。

///<  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; }