设计模式 -- Singleton
Singleton.h
class PictureManager { public: PictureManager(); ~PictureManager(); static PictureManager* Instance(); void test() { PRINT; } private: class PictureManagerPtr { public: PictureManagerPtr() : _pInstance(0) { PRINT; } ~PictureManagerPtr() { PRINT; delete _pInstance; } PictureManager* GetPtr() { return _pInstance; } void SetPtr(PictureManager* ptr) { PRINT; if( _pInstance != 0 ) { delete _pInstance; } _pInstance = ptr; } private: PictureManager* _pInstance; }; static PictureManagerPtr m_pictureMPtr; }; #define PMPtr PictureManager::Instance()
Singleton.cpp
#include "Singleton.h" PictureManager::PictureManagerPtr PictureManager::m_pictureMPtr; PictureManager::PictureManager() { PRINT; } PictureManager::~PictureManager() { PRINT; } PictureManager* PictureManager::Instance() { PRINT; if (m_pictureMPtr.GetPtr() == 0) { m_pictureMPtr.SetPtr( new PictureManager() ); } return m_pictureMPtr.GetPtr(); }