应用场景:一个类只能实例化一个对象。
设计原理:可以根据静态变量来控制对象的实现。
/**
* description:单体类
* author:wanghq
*/
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
#include <iostream>
using namespace std;
template<class TYPE>
class GDF_Singleton
{
public:
static TYPE *Instance(void);
static void Close (void);
private:
static TYPE *m_Instance;
};
template<class TYPE>
TYPE * GDF_Singleton<TYPE>::m_Instance = NULL;
template<class TYPE>
TYPE * GDF_Singleton<TYPE>::Instance (void)
{
if (NULL != m_Instance)
{
return m_Instance;
}
else
{
m_Instance = new TYPE ();
return m_Instance;
}
}
template<class TYPE>
void GDF_Singleton<TYPE>::Close (void)
{
if (NULL != m_Instance)
{
delete m_Instance;
GDF_Singleton<TYPE>::m_Instance = NULL;
}
}
#endif