设计模式学习(C++实现)3——单例模式

来源:互联网 发布:陈国良院士 知乎 编辑:程序博客网 时间:2024/06/05 19:31

  单例模式,顾名思义,设计一个类,在程序的运行过程中只能生成其一个实例,实现要点是将构造函数设为私有的。
  

//单例模式class SingleObject {    SingleObject() {}    static SingleObject *instance;public:    static SingleObject *getInstance() {        if (instance == nullptr)            instance = new SingleObject();        return instance;    }    void showMessage() {        cout << "haha" << endl;    }};SingleObject *SingleObject::instance = NULL;

这种实现形式被称为懒汉式单例类,还有饿汉式单例类,即在静态区初始化instance,此外在getinstance中加锁可实现线程安全:

//单例模式class SingleObject {    SingleObject() {}    static SingleObject *instance;public:    static SingleObject *getInstance() {        lock();        if (instance == nullptr)            instance = new SingleObject();        unlock();        return instance;    }    void showMessage() {        cout << "haha" << endl;    }};SingleObject *SingleObject::instance = NULL;

此外还有双重加锁形式等多种形式。