您的位置:首页 > 其它

第七十二题(设计一个类,我们只能生成该类的一个实例)

2014-07-08 16:34 246 查看
72. 题目:设计一个类,我们只能生成该类的一个实例。

分析:设计模式中的单例模式,这里给出单例模式的几种情形下的C++实现。

普通的单例模式:

class CSingleton  
{  
public:  
    static CSingleton* getInstance()  
    {  
        if (mInstance == NULL)  
            mInstance = new CSingleton();  
        return mInstance;  
    }  
private:  
    CSingleton(){}  
    static CSingleton* mInstance;  
};


增加删除操作的单例模式:

class CSingleton  
    {  
    public:  
        static CSingleton* getInstance()  
        {  
            if (mInstance == NULL)  
                mInstance = new CSingleton();  
            return mInstance;  
        }  
    private:  
        CSingleton(){}  
        static CSingleton* mInstance;  
  
    private:  
        class Deleter  
        {  
        public:  
            ~Deleter()  
            {  
                delete CSingleton::mInstance;  
            }  
        };  
  
    private:  
        static Deleter deleter;  
    };
增加锁的单例模式:

class CSingleton  
    {  
    public:  
        static CSingleton* getInstance()  
        {  
            Lock();  
            if (mInstance == NULL)  
                mInstance = new CSingleton();  
            unLock();  
            return mInstance;  
        }  
    private:  
        CSingleton(){}  
        static CSingleton* mInstance;  
  
    private:  
        class Deleter  
        {  
        public:  
            ~Deleter()  
            {  
                delete CSingleton::mInstance;  
            }  
        };  
  
    private:  
        static Deleter deleter;  
    };


饿汉模式:

class SingletonStatic  
{  
private:  
    static const SingletonStatic* mInstance;  
    SingletonStatic(){};  
public:  
    static const SingletonStatic* getInstance()  
    {  
        return mInstance;  
    }  
};  
const   SingletonStatic*   SingletonStatic::mInstance = new  SingletonStatic();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: