您的位置:首页 > 其它

单件模式-Singleton

2012-04-12 13:18 183 查看

基于模版的Singleton模式

template<typename T>
class SingleTemp
{
public:
static T* GetInstance()
{
//static T* pInstance = new T(); 其实静态的局部变量,还能简化代码
if (NULL == m_pSingle)
{
m_pSingle = new T();
}
return m_pSingle;
}
protected:
SingleTemp()
{
cout<<"Call SingleTemp()"<<endl;
}
private:
static T* m_pSingle;
};
template<typename T>
T* SingleTemp<T>::m_pSingle = NULL;

class MySingle : public SingleTemp<MySingle>
{
template<typename T>
friend class SingleTemp;
/* 或者
friend class SingleTemp<MySingle>;
*/
private:
MySingle()
{
cout<<"Call MySingle()"<<endl;
}
};


总结, 要想用继承,模版的方式,复用单件模式,其子类(你想他成为单件的类)的构造函数要为private, 并且还要添加对应模版的友元类.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: