QT单例模式实现一个数据层

1. 创建一个继承自QObject的类,该类将作为单例数据层接口。
2. 在类中定义需要存储的数据,并提供set和get方法来操作数据。
3. 使用静态函数来获取单例实例,并确保只有一个实例存在。

// datainterface.h
#ifndef DATAINTERFACE_H
#define DATAINTERFACE_H

#include <QObject>

class DataInterface : public QObject
{
Q_OBJECT

public:
static DataInterface* getInstance();

void setData(const QString& data);
QString getData();

private:
explicit DataInterface(QObject *parent = nullptr);
static DataInterface* instance;
QString m_data;

static QMutex mutex; //多线程环境下建议使用加锁

};

#endif // DATAINTERFACE_H

 

// datainterface.cpp
#include "datainterface.h"

DataInterface* DataInterface::instance = nullptr;
QMutex DataInterface::mutex;

DataInterface::DataInterface(QObject *parent) : QObject(parent)
{
}

DataInterface* DataInterface::getInstance()
{
mutex.lock();
if (!instance) {
instance = new DataInterface();
}
mutex.unlock();
return instance;
}

void DataInterface::setData(const QString& data)
{
mutex.lock();
m_data = data;
mutex.unlock();
}

QString DataInterface::getData()
{
mutex.lock();
QString data = m_data;
mutex.unlock();
return data;
}

 

 

调用:

DataInterface* dataInterface = DataInterface::getInstance();
dataInterface->setData("Hello, Singleton!");
QString data = dataInterface->getData();

posted @ 2024-07-01 14:32  Azuki_op  阅读(124)  评论(0)    收藏  举报