模板化的单例模式

最近看的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语言中全局变量,没什么差别。
posted @ 2012-07-10 11:42  mr_nop  Views(322)  Comments(0Edit  收藏  举报