一、单例模式保证一个类仅有一个实例,并提供一个访问它的的全局访问点。
① 定义私有的静态对象、对象指针或引用
② 将该类构造函数设为private,防止外部用new来实例化
③ 外部仅能通过公有静态成员函数获得唯一对象
单例的实现方式分为懒汉式 和 饿汉式。
如下是饿汉式的实现方式:
#ifndef GLOBAL_H #define GLOBAL_H #include <QObject> #include <QMutex> class Global : public QObject { Q_OBJECT public: ~Global(); static Global* GetInstance(); private: Global(); static Global *m_instance; static QMutex m_mutex; }; #endif // GLOBAL_H
#include "Global.h" Global* Global::m_instance = nullptr; QMutex Global::m_mutex; Global::Global() { } Global::~Global() { } Global *Global::GetInstance() { if (m_instance == nullptr) { QMutexLocker locker(&m_mutex); if (m_instance == nullptr) { m_instance = new Global(); } } return m_instance; }