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;
 }

 

這兩種創建方式區別是

第一種是在全局直接創建,無論程序中用到用不到該單例對象,對象都會被創建。

第二種是用到該單例對象時,才創建該對象。

個人認爲:

若該單例模式是程序初始化的池、底層的工廠,是上層業務運行的基礎。用第一種方式實現

若是程序上層業務,用第二種方式實現。

 

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