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

1 篇文章 0 订阅
1 篇文章 0 订阅

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

单例模式示意如下:

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

 

这两种创建方式区别是

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

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

个人认为:

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值