C++实现单例模式

来源:互联网 发布:淘宝买家信誉度是什么 编辑:程序博客网 时间:2024/06/08 03:52

  本篇博文我们来简单学习一下设计模式中最简单的一个模式——单例模式。单例模式我们将构造函数设计成私有化,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数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

原创粉丝点击