面向對象編程設計中,常用到單例模式,以實現全局唯一對象。
單例模式示意如下:
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;
}
這兩種創建方式區別是
第一種是在全局直接創建,無論程序中用到用不到該單例對象,對象都會被創建。
第二種是用到該單例對象時,才創建該對象。
個人認爲:
若該單例模式是程序初始化的池、底層的工廠,是上層業務運行的基礎。用第一種方式實現
若是程序上層業務,用第二種方式實現。