当前位置: 首页 > news >正文

网上书城网站开发外文参考文献网站收录查询入口

网上书城网站开发外文参考文献,网站收录查询入口,制作网站需要学什么,app好做吗单例的定义 官方定义:单例是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 单例的写法 抓住3点: 构造函数私有化(确保只有一个实例)提供一个可以获取构造实例的接口(提供唯一的实…

单例的定义

官方定义:单例是指确保一个类在任何情况下都绝对只有一个实例并提供一个全局访问点。

单例的写法

抓住3点:

  • 构造函数私有化(确保只有一个实例)
  • 提供一个可以获取构造实例的接口(提供唯一的实例)
  • 正常写你需要实现的函数

 举个例子

①就是构造函数私有化,把构造函数放在private

②就是提供一个可以获取实例的接口,这个实例就是私有变量_singleton

③就是正常需要实现的函数,正常咋写就咋写,但最好是独立的且需要多次被使用

用法

在需要使用单例的文件中添加单例的头文件

举个例子,我要在BlockFileTreeView中使用单例中的函数,那么我就在BlockFileTreeView.cpp中添加单例头文件

#include "ResourceTreeViewSingleton.h"

然后再需要调用函数的地方通过单例的init获取实例,然后调用需要使用的函数

filePath = _fileLocalPath + ResourceTreeViewSingleton::init()->getRelativePath(_currentProcessItem,"");
重点就是这句ResourceTreeViewSingleton::init()->getRelativePath(_currentProcessItem,"");

红色部分是获取单例的实例,黄色部分就是调用单例的函数。

单例代码

.h

#ifndef RESOURCETREEVIEWSINGLETON_H
#define RESOURCETREEVIEWSINGLETON_H#include <QSharedPointer>
#include <QMutex>
#include <QStandardItem>
#include <QFileInfo>
class ResourceTreeViewSingleton: public QObject
{Q_OBJECT
public:~ResourceTreeViewSingleton() override;static QSharedPointer<ResourceTreeViewSingleton>& init();static void doDeleteLater(ResourceTreeViewSingleton *obj);static void releaseThis();// 单例类中需要实现的函数bool isDirVisible(QString text);QString changeUnit(const qint64 &size);QString changeQStringSize(const QString &size);bool isFile(QStandardItem * item);QString getRelativePath(QStandardItem *item, QString relativePath);QList<QStandardItem *> queryStandardItem(QStandardItem *topItem);QList<QStandardItem *> queryStandardItemPush(QStandardItem *topItem);bool saveFile(const QString &filePath, const QString &text);QString getDefaultDeviceName(const QStandardItem *item, const QFileInfo &fileInfo);
private:explicit ResourceTreeViewSingleton(QObject *parent = nullptr);static QSharedPointer<ResourceTreeViewSingleton > _singleton;static QMutex _mutex;
};#endif // RESOURCETREEVIEWSINGLETON_H

.cpp

#include "ResourceTreeViewSingleton.h"
#include <QMutexLocker>
#include <QStandardItem>
QMutex ResourceTreeViewSingleton::_mutex;
QSharedPointer<ResourceTreeViewSingleton> ResourceTreeViewSingleton::_singleton;ResourceTreeViewSingleton::ResourceTreeViewSingleton(QObject *parent): QObject(parent)
{}ResourceTreeViewSingleton::~ResourceTreeViewSingleton()
{}void ResourceTreeViewSingleton::doDeleteLater(ResourceTreeViewSingleton *obj)
{obj->deleteLater();
}
void ResourceTreeViewSingleton::releaseThis()
{_singleton.clear();
}QSharedPointer<ResourceTreeViewSingleton> &ResourceTreeViewSingleton::init()
{//初始化决定了它所在的线程if (_singleton.isNull()){QMutexLocker mutexLocker(&_mutex);if (_singleton.isNull()){//发现 doDeleteLater 会崩溃_singleton = QSharedPointer<ResourceTreeViewSingleton>(new ResourceTreeViewSingleton()/*,doDeleteLater*/);}}return _singleton;
}//下面写需要实现的正常函数

http://www.mmbaike.com/news/97586.html

相关文章:

  • 网站上面的logo怎么做聊城seo优化
  • 天元建设集团坑人山西seo和网络推广
  • 办公空间设计装修优化设计五年级上册语文答案
  • 阿里建站官网市场推广的方法和规划
  • 做电影网站算侵权吗辽源seo
  • 设计网站中如何设置特效西安官网seo技术
  • b2b网站优化建设设计师培训班多少钱
  • java 开发手机网站市场调研报告包括哪些内容
  • 百度站长 添加网站最有效的app推广方式有哪些
  • 网站301重定向web设计一个简单网页
  • 企业做网站收费网络营销的实现方式有哪些
  • 登封市城乡建设路网站站长号
  • 南宁网站建设技术支持steam交易链接在哪看
  • 天台县建设规划局网站小学生收集的新闻10条
  • 石家庄最新疫情最新消息轨迹五行seo博客
  • 网站备案幕布尺寸响应式网站 乐云seo品牌
  • 网站建设 合优网络网站排名怎么优化
  • 上海php做网站谷歌首页
  • 广西建设网培训中心360优化大师最新版的功能
  • 西安教育平台网站建设seo怎么优化效果更好
  • 易语言用电脑做网站服务器太原关键词优化报价
  • 做期货看什么网站今日国内新闻大事件
  • 网站内容避免被采集广州网站优化方案
  • 做网站需要的注意事项关键字排名查询
  • 汉中专业网站建设开发信阳搜索引擎优化
  • 一级页面的网站怎么做大数据分析师
  • 徐州市做网站网站权重如何查询
  • 万户网站建设百度竞价点击工具
  • 中企网站建设谷歌seo外包公司哪家好
  • 怎样把网站做的漂亮百度在线人工客服