设计模式的C++实现 1.单例模式(二)

2015-07-20 17:29:55 · 作者: · 浏览: 13
= instance){ EnterCriticalSection(&cs); if(NULL == instance){//双检锁,在进入临界区后再检测一次是否对象已经建立 instance = new SingleTon(); } LeaveCriticalSection(&cs); } return instance; } static void delelteInstance(){ if(NULL != instance){ EnterCriticalSection(&cs); if(NULL != instance){ delete instance; instance = NULL; } LeaveCriticalSection(&cs); } } private: SingleTon(){ } SingleTon(const SingleTon&); SingleTon& operator=(const SingleTon&); static SingleTon* instance; ~SingleTon(){}//相应的关闭连接等操作 class GarBo{ public: ~GarBo(){ if(NULL != instance){ EnterCriticalSection(&cs); if(NULL != instance){ delete instance; instance = NULL; } LeaveCriticalSection(&cs); } } }; static GarBo gc ; }; SingleTon* SingleTon::instance ; SingleTon::GarBo SingleTon::gc;//类外的初始化。这样就获得一个比较完美的单例类了。