常见的设计模式-单例模式
class Singleton{ private: Singleton() {} static Singleton *m_pInstance; public: static Singleton *GetInstance() { if(m_pInstance == null) m_pInstance = new Singleton(); return m_pInstance; } }
class Lock { private: CCriticalSection m_cs; public: Lock(CCriticalSection cs):m_cs(cs) { m_cs.Lock(); } ~Lock() { m_cs.UnLock(); } } class Singleton { private: Singleton(); Singleton(const Singleton &); Singleton &operator=(const Singleton&); public: static Singleton *Instantialize(); static Singleton *pInstance; static CCriticalSection cs;
}
Singleton* Singleton::pInstance = 0;
Singleton* Singleton::Instantialize()
{
if(pInstance == NULL)
{ //double check
Lock lock(cs);
if(pInstance == NULL)
{
pInstance = new Singleton();
}
}
return pInstance;
}