面向对象编程设计中,常用到单例模式,以实现全局唯一对象。
单例模式示意如下:
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;
}
这两种创建方式区别是
第一种是在全局直接创建,无论程序中用到用不到该单例对象,对象都会被创建。
第二种是用到该单例对象时,才创建该对象。
个人认为:
若该单例模式是程序初始化的池、底层的工厂,是上层业务运行的基础。用第一种方式实现
若是程序上层业务,用第二种方式实现。