一、单例模式保证一个类仅有一个实例,并提供一个访问它的的全局访问点。
① 定义私有的静态对象、对象指针或引用
② 将该类构造函数设为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;
}