1. 程式人生 > >C++ 單例模板類

C++ 單例模板類

單例模式(Singleton)是設計模式常見的一種,其目的是保證系統中只存在某類的唯一例項(物件)。在應用程式中,經常用於配置,日誌等的處理。
使用單例模板類可以很容易地實現單例模式。
程式碼如下:
template<class T>
class CSingleton
{
public:
	static T* Instance()
	{
		if (NULL == m_pInstance)
		{
			// 二次檢查
			if (NULL == m_pInstance)
			{
				m_pInstance = new T;
				atexit(Destory);
			}
		}

		return m_pInstance;
	} 

protected:
	CSingleton() {} //防止例項
	CSingleton(const CSingleton&) {} //防止拷貝構造一個例項
	CSingleton& operator=(const CSingleton&){} //防止賦值出另一個例項

	virtual ~CSingleton()
	{
	}

	static void Destory()
	{
		if (m_pInstance)
		{
			delete m_pInstance;
			m_pInstance = NULL;
		}
	}

private:
	static T* m_pInstance;
};

template<class T> T* CSingleton<T>::m_pInstance = NULL;

使用方法:
通過以下語句:CSingleton<類名>::Instance(),獲取指向某類例項的指標。