一、單例模式保證一個類僅有一個實例,並提供一個訪問它的的全局訪問點。
① 定義私有的靜態對象、對象指針或引用
② 將該類構造函數設為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; }