模板化的单例模式
最近看的android代码,看到一个模板实现的单例模式,相当易用。
在framework/base/utils/include/singleton.h
直接继承即可。做个记录
template <typename TYPE> class Singleton { public: static TYPE& getInstance() { Mutex::Autolock _l(sLock); TYPE* instance = sInstance; if (instance == 0) { instance = new TYPE(); sInstance = instance; } return *instance; } protected: ~Singleton() { }; Singleton() { }; private: Singleton(const Singleton&); Singleton& operator = (const Singleton&); static Mutex sLock; static TYPE* sInstance; };
//用法如下。
class OverlayMgr : public Singleton<OverlayMgr> { }
其实学了一下单例模式,感觉就是c语言中全局变量,没什么差别。