C++实现单例模式

  本篇博文我们来简单学习一下设计模式中最简单的一个模式——单例模式。单例模式我们将构造函数设计成私有化,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数GetInstance。此外,我们创建一个静态该类的指针,并且仅在静态函数中实例化一次。整个过程的实现就可以让无论多少次调用,类对象仅会构建一个。
  它的优势主要以下几个方面:
  ① 控制资源的使用,通过线程同步来控制资源的并发访问;
  ② 控制实例产生的数量,达到节约资源的目的;
  ③ 作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的线程或者进程之间实现通信。
  比如数据库连接池的设计一般采用单例模式,数据库连接是一种数据库资源。
  单例模式相对比较简单,我们直接看下面的C++程序:

class Singleton
{
public:
    ~Singleton()
    {
        if (singleton != nullptr)
        {
            delete singleton;
            singleton = nullptr;
        }

    }
    static Singleton* GetInstance()   // 唯一接口来实例化类对象
    {
        if (singleton == nullptr)
            singleton = new Singleton();// 仅会实例化一个对象

        return singleton;
    }
private:
    static Singleton* singleton; // 静态类对象,类外需要初始化
    Singleton()                  // 私有构造函数
    {
    }
};

Singleton* Singleton::singleton = nullptr; // 类外初始化

int main()
{
    Singleton* item1 = Singleton::GetInstance();
    Singleton* item2 = Singleton::GetInstance();

    return 0;
}

  以上是个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!
  转载请注明出处:http://blog.csdn.net/FX677588/article/details/76563255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值