单例模式(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(),获取指向某类实例的指针。