單例模式(Singleton Pattern)
目的
確保一個類只有一個實例,提供一個全局訪問接口。
結構
- 單例: 定義一個使用戶只能操作一個實例的類。
源碼
template <class T> class singleton //: private T { protected: singleton(); ~singleton(); protected: static T* p_ins; public: static T& instance(); static T* ptr(); static void destroy(); }; template <class T> inline singleton<T>::singleton() { p_ins = NULL; } template <class T> inline singleton<T>::~singleton() { } template <class T> T &singleton<T>::instance() { if ( NULL == p_ins ) { p_ins = new T; } return *(p_ins); } template <class T> T* singleton<T>::ptr() { if ( NULL == p_ins ) { p_ins = new T; } return (p_ins); } template <class T> void singleton<T>::destroy() { if (p_ins != null) { delete p_ins; p_ins = null; } }