设计模式 -- 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();
}

posted on 2010-04-01 11:29  Chopper  阅读(251)  评论(0编辑  收藏  举报