C++单例模式singlton中唯一实例instance创建的两种方式区别

面向对象编程设计中,常用到单例模式,以实现全局唯一对象。

单例模式示意如下:

class Singleton 
{
public:
    static Singleton* getInstance();
    static void release() //或destroy
    {
        delete _instance;
        _instance=NULL;
    }
private:
    Singleton(void);
    virtual ~Singleton(void);
private:
    static Singleton* _instance;

};

关于getInstance

创建单例模式实例有两种方法

方法1:全局创建,getInstance直接返回该实例即可

Singleton* Singleton::_instance=new Singleton();

Singleton* Singleton::getInstance()

{
        return _instance;
 }

方法2:创建过程在getInstance执行

Singleton* Singleton::getInstance()

{

       if(NULL==_instance)

       {

              _instance=new Singleton();

             return _instance;

       }

       else
               return _instance;
 }

 

这两种创建方式区别是

第一种是在全局直接创建,无论程序中用到用不到该单例对象,对象都会被创建。

第二种是用到该单例对象时,才创建该对象。

个人认为:

若该单例模式是程序初始化的池、底层的工厂,是上层业务运行的基础。用第一种方式实现

若是程序上层业务,用第二种方式实现。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章