这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式组成:
1、有一个静态的成员变量。提供该类的唯一实例
2、构造函数定义为私有。使外部无法创建对象实例
3、一个静态的访问接口。提供唯一的对象访问接口,如果唯一对象没有被创建则在这个里面创建。
///C++ 实现的单例模板
template <typename T>
class TSingleton
{
public:
static T* Instance();
private:
TSingleton(void) {}
~TSingleton(void) {}
static std::auto_ptr<T> m_Instance;
};
template <typename T>
T* TSingleton<T>::Instance()
{
if (!m_Instance.get())
{
T* p = NULL;
try
{
p = new T;
}
catch (...)
{
p = NULL;
}
if (NULL == p)
{
OutputDebugStringA ("*** 内存申请失败 ***");
}
m_Instance.reset (p);
}
return m_Instance.get();
}
template <typename T>
std::auto_ptr<T> TSingleton<T>::m_Instance;
C++单例模板的使用方法:
TSingleton<myClass>::instance();