Qt 單例模式


 一、單例模式保證一個類僅有一個實例,並提供一個訪問它的的全局訪問點。

  ① 定義私有的靜態對象、對象指針或引用

  ② 將該類構造函數設為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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM