1.一个非常好的singleton实现方式,在大型系统开发方面很适用,可以封装一些在工程中用到的全局的数据,singleton类只有一个接口,所以可以很好的保护数据。
#ifndef SINGLETON_H
#define SINGLETON_H
template <class T>
class Singleton
{
public:
static T& instance()
{
static T _instance;
return _instance;
}
protected:
Singleton(void) {}
virtual ~Singleton(void) {}
Singleton(const Singleton<T>&); //不实现
Singleton<T>& operator= (const Singleton<T> &); //不实现
};
2.接着将singleton的宏定义,即可实现singleton 的方便快捷定义
#define DECLARE_SINGLETON(ClassName); /
public: /
static ClassName& instance() /
{ /
static ClassName _instance; /
return _instance; /
} /
private: /
ClassName(void); /
ClassName(const ClassName&); /
ClassName& operator= (const ClassName &);
//End of define DECLARE_SINGLETON(ClassName);
#endif
3.应用,举个例子:
#include "singleton.h"
class DateMgr
{
DECLEAR_SINGLETON(DataMgr)
public:
virtual ~DataMgr(){}
pretected:
void Test();
}
那么这个DataMgr里面的函数Test(),就可以在别处通过DataMgr::instance().Test();调用。