zoukankan      html  css  js  c++  java
  • 设计模式 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();
    }
    
    
  • 相关阅读:
    CKA&CKAD考试
    进程线程和协程
    HTTP协议
    Centos操作系统启动流程
    高并发下的Linux内核参数优化
    DDoS防护系统建设的一些思路
    DDoS防护实现概述
    Nginx故障排查思路
    git常用指令集
    DNS实现粗粒度容灾
  • 原文地址:https://www.cnblogs.com/wzh206/p/1702096.html
Copyright © 2011-2022 走看看