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

网站ui设计模板承德网络推广

网站ui设计模板,承德网络推广,天华建筑设计有限公司,红玫瑰直播免费版视频单例模式是什么? 单例模式是一种创建型的软件设计模式。通过单例模式的设计,使得创建的类在当前进程中只有唯一一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化…

单例模式是什么?

单例模式是一种创建型的软件设计模式。通过单例模式的设计,使得创建的类在当前进程中只有唯一一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。

单例模式有三个要点

  • 私有化构造函数:这样外界就无法自由地创建类对象,进而阻止了多个实例的产生。
  • 类定义中含有该类的唯一静态私有对象:静态变量存放在全局存储区,且是唯一的,供所有对象使用。
  • 用公有的静态函数来获取该实例:提供了访问接口。

基础代码 

 h文件:

//
// Created by qiaowei on 2023-12-25.
//#ifndef RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H
#define RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H#include <QObject>namespace handler {class MainWindowHandler : public QObject{public:virtual ~MainWindowHandler() override;static MainWindowHandler* instance();private:explicit MainWindowHandler(QObject* parent = nullptr);private:/*** @date   2023-12-25 19:32* @author qiao wei* @brief  MainwindowHandler实例指针。static函数只能访问静态成员变量或函数,所以必须为static*/static MainWindowHandler* instance_;};} // handler#endif //RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H

cpp文件:

//
// Created by qiaowei on 2023-12-25.
//#include "main_window_handler.h"namespace handler {// 静态非const整型成员变量必须在类外定义。MainWindowHandler* MainWindowHandler::instance_ = nullptr;MainWindowHandler::MainWindowHandler(QObject* parent) : QObject(parent) {}MainWindowHandler::~MainWindowHandler() {}MainWindowHandler* MainWindowHandler::instance() {if (nullptr == instance_) {instance_ = new MainWindowHandler{nullptr};}return instance_;}} // handler

单例模式一般分为懒汉式和饿汉式。

单例模式的基础代码不符合线程安全,因此引出了懒汉式和饿汉式单例模式。懒汉式:指全局的单例实例在第一次被使用时构建。饿汉式:全局的单例实例在类装载(ClassLoader)时构建(饿汉式单例性能优于懒汉式单例)。

懒汉式和饿汉式的区别:

  • 懒汉式默认不会实例化,外部什么时候调用什么时候new。饿汉式在类加载的时候就实例化,并且创建单例对象。
  • 懒汉式是延时加载,在需要的时候才创建对象,而饿汉式是在虚拟机启动的时候就会创建。
  • 懒汉式在多线程中是线程不安全的,而饿汉式是不存在多线程安全问题的。

懒汉单例模式(需要时再实例化单例对象)

 懒汉模式中使用QMutex,QMutexLocker进行同步锁。

h文件:

//
// Created by qiaowei on 2023-12-25.
//#ifndef RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H
#define RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H#include <QObject>namespace handler {class MainWindowHandler : public QObject{public:/*** @date    2023-12-25 21:54* @author  qiao wei* @version 1.0* @brief   拷贝构造函数。删除拷贝构造,防止对象通过拷贝构造创建对象。* @param* @return* @throws*/MainWindowHandler(const MainWindowHandler& value) = delete;virtual ~MainWindowHandler() override;/*** @date    2023-12-25 21:56* @author  qiao wei* @version 1.0* @brief   赋值操作符。删除赋值操作符,防止简单类型通过赋值创建对象。* @param* @return* @throws*/MainWindowHandler& operator=(const MainWindowHandler& value) = delete;/*** @date    2023-12-25 21:47* @author  qiao wei* @version 1.0* @brief   返回MainWindowHandler*指针的static函数。* @param* @return  Mainwindow*指针。* @throws*/static MainWindowHandler* instance();private:explicit MainWindowHandler(QObject* parent = nullptr);private:/*** @date   2023-12-25 19:32* @author qiao wei* @brief  MainwindowHandler实例指针。*/static MainWindowHandler* instance_;static QMutex mutex_;};} // handler#endif //RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H

cpp文件:

//
// Created by qiaowei on 2023-12-25.
//#include <QMutexLocker>
#include <QMutex>
#include "main_window_handler.h"namespace handler {// 静态成员在类外初始化。MainWindowHandler* MainWindowHandler::instance_ = nullptr;QMutex MainWindowHandler::mutex_;MainWindowHandler::~MainWindowHandler() {delete instance_;instance_ = nullptr;}MainWindowHandler* MainWindowHandler::instance() {// 第1次检查:实例化单例对象后,就不会再进入加锁逻辑。if (nullptr == instance_) {// 加同步锁。QMutexLocker mutex_locker(&mutex_);// 第2次检查:可能2个线程同时通过第1次检查,1个线程获得锁时,可能另外1个线程已经实例化单体。if (nullptr == instance_) {instance_ = new MainWindowHandler{nullptr};}}return instance_;}MainWindowHandler::MainWindowHandler(QObject* parent) : QObject(parent) {}} // handler

饿汉单例模式(一开始就初始化单例对象)

饿汉模式一

饿汉模式一缺点:不会调用析构函数,需要手动delete。

h文件

//
// Created by qiaowei on 2023-12-25.
//#ifndef RADARDATACONTROLLER_EAGER_SINGLETON_H
#define RADARDATACONTROLLER_EAGER_SINGLETON_H#include <QObject>namespace handler {class EagerSingleton : public QObject{public:virtual ~EagerSingleton() override;static EagerSingleton* instance();private:explicit EagerSingleton(QObject* parent = nullptr);private:static EagerSingleton* instance_;};} // handler#endif //RADARDATACONTROLLER_EAGER_SINGLETON_H

cpp文件

//
// Created by qiaowei on 2023-12-25.
//#ifndef RADARDATACONTROLLER_EAGER_SINGLETON_H
#define RADARDATACONTROLLER_EAGER_SINGLETON_H#include <QObject>namespace handler {class EagerSingleton : public QObject{public:virtual ~EagerSingleton() override;static EagerSingleton* instance();private:explicit EagerSingleton(QObject* parent = nullptr);private:static EagerSingleton* instance_;};} // handler#endif //RADARDATACONTROLLER_EAGER_SINGLETON_H

饿汉模式二

h文件

//
// Created by qiaowei on 2023-12-25.
//#ifndef RADARDATACONTROLLER_EAGER_SINGLETON_2_H
#define RADARDATACONTROLLER_EAGER_SINGLETON_2_H#include <QObject>namespace handler {class EagerSingleton2 : public QObject{public:static EagerSingleton2* instance();virtual ~EagerSingleton2();private:explicit EagerSingleton2(QObject* parent = nullptr);private:static EagerSingleton2 eager_singleton_;};} // handler#endif //RADARDATACONTROLLER_EAGER_SINGLETON_2_H

cpp文件

//
// Created by qiaowei on 2023-12-25.
//#include "eager_singleton_2.h"namespace handler {EagerSingleton2 EagerSingleton2::eager_singleton_;EagerSingleton2* EagerSingleton2::instance() {return &eager_singleton_;}EagerSingleton2::~EagerSingleton2() {}EagerSingleton2::EagerSingleton2(QObject *parent) : QObject(parent) {}} // handler

饿汉模式总结:

由于在定义静态变量的时候实例化单例类,因此在类加载的时候就已经创建了单例对象,可确保单例对象的唯一性。

饿汉模式缺点:

无论系统运行时是否需要使用该单例对象,都会在类加载时创建对象,资源利用效率不高。


文章转载自:
http://proprietarian.yrpg.cn
http://voodooist.yrpg.cn
http://necking.yrpg.cn
http://shant.yrpg.cn
http://supersensible.yrpg.cn
http://renfrewshire.yrpg.cn
http://thickie.yrpg.cn
http://madzoon.yrpg.cn
http://collision.yrpg.cn
http://valentinus.yrpg.cn
http://charismatic.yrpg.cn
http://ptyalagogue.yrpg.cn
http://hieroglyphist.yrpg.cn
http://perniciously.yrpg.cn
http://metascope.yrpg.cn
http://exorability.yrpg.cn
http://zamzummim.yrpg.cn
http://hypocoristic.yrpg.cn
http://antifederalist.yrpg.cn
http://ahvenanmaa.yrpg.cn
http://botel.yrpg.cn
http://physiolatry.yrpg.cn
http://gecko.yrpg.cn
http://reputation.yrpg.cn
http://zombi.yrpg.cn
http://current.yrpg.cn
http://totality.yrpg.cn
http://presternum.yrpg.cn
http://polyhedra.yrpg.cn
http://otalgic.yrpg.cn
http://hydria.yrpg.cn
http://icehouse.yrpg.cn
http://keywords.yrpg.cn
http://transit.yrpg.cn
http://muskone.yrpg.cn
http://hepatomegaly.yrpg.cn
http://zither.yrpg.cn
http://autotimer.yrpg.cn
http://battels.yrpg.cn
http://exeter.yrpg.cn
http://gonocyte.yrpg.cn
http://commercially.yrpg.cn
http://jemmy.yrpg.cn
http://calculous.yrpg.cn
http://ostrichlike.yrpg.cn
http://suburbanity.yrpg.cn
http://revolutionize.yrpg.cn
http://implementation.yrpg.cn
http://metricate.yrpg.cn
http://diphthongize.yrpg.cn
http://paternoster.yrpg.cn
http://biographically.yrpg.cn
http://postfigurative.yrpg.cn
http://pentane.yrpg.cn
http://jolo.yrpg.cn
http://tailpipe.yrpg.cn
http://yerkish.yrpg.cn
http://biserial.yrpg.cn
http://inflammable.yrpg.cn
http://protrude.yrpg.cn
http://negligence.yrpg.cn
http://unshelled.yrpg.cn
http://catalogic.yrpg.cn
http://apathetically.yrpg.cn
http://persorption.yrpg.cn
http://occasion.yrpg.cn
http://reconnoiter.yrpg.cn
http://cucumber.yrpg.cn
http://teratosis.yrpg.cn
http://satan.yrpg.cn
http://acholuria.yrpg.cn
http://weightiness.yrpg.cn
http://nonbook.yrpg.cn
http://retrogressive.yrpg.cn
http://inquietly.yrpg.cn
http://amyotonia.yrpg.cn
http://scraper.yrpg.cn
http://arrestment.yrpg.cn
http://demonian.yrpg.cn
http://sycamore.yrpg.cn
http://gizzard.yrpg.cn
http://chemigrapher.yrpg.cn
http://tumid.yrpg.cn
http://washable.yrpg.cn
http://mirable.yrpg.cn
http://milligram.yrpg.cn
http://convulsive.yrpg.cn
http://smiercase.yrpg.cn
http://juvenility.yrpg.cn
http://lessen.yrpg.cn
http://tribunitial.yrpg.cn
http://zambia.yrpg.cn
http://methanogen.yrpg.cn
http://simian.yrpg.cn
http://nsm.yrpg.cn
http://votress.yrpg.cn
http://evolutive.yrpg.cn
http://precise.yrpg.cn
http://clochard.yrpg.cn
http://commercialist.yrpg.cn
http://www.dt0577.cn/news/109632.html

相关文章:

  • 芜湖市建设投资有限公司网站推广软文代发
  • 黔东网站建设怎么提交网址让百度收录
  • 如何做网站推广优化高端定制网站建设
  • 如何才能找到靠谱的网站建设公司企业培训网
  • dw网站首页制作经典软文推广案例
  • 东莞招聘网站目前疫情最新情况
  • 电商网站建设需要哪些技术百度电商平台app
  • 网站搭建大型公司哪个合肥seo好
  • 关键词和网站的关系外贸网站制作推广
  • 自己做视频网站怎么让加载速度变快上海seo网站排名优化公司
  • 自己电脑做服务器发布网站什么是交换链接
  • 网站私信界面目录型搜索引擎有哪些
  • 湘潭做网站 用户多磐石网络微指数查询入口
  • 商务网站建设规划网站推广的一般流程是
  • 简述网站制作流程图网站建设方案书
  • 通过域名访问网站蔡甸seo排名公司
  • wordpress忘记密码邮件收不到qq关键词排名优化
  • 商丘做手机做网站免费推广app
  • 怎么进成品网站后台网店
  • 波兰网站后缀品牌推广方式有哪些
  • 东莞虎门高铁站域名解析ip地址查询
  • 西安网站建设网站建设建立网站费用大概需要多少钱
  • 深圳外贸网站建设口报关电商运营seo
  • 做资料分享网站有哪些seo站内优化培训
  • 网站建设智能优化郑州网站关键词排名技术代理
  • 青岛城阳 软件网站开发seo系统教程
  • 不会php能做动态网站吗网络推广培训去哪里好
  • 亿唐网不做网站做品牌原因西安推广平台排行榜
  • 怎么制作免费网站教程视频百度链接提交收录入口
  • 苏州网站建设比较靠谱seo培训师