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

劲松网站建设网店营销推广计划书

劲松网站建设,网店营销推广计划书,网站推广的意义和方法,深圳勘察设计协会单例模式是什么#xff1f; 单例模式是一种创建型的软件设计模式。通过单例模式的设计#xff0c;使得创建的类在当前进程中只有唯一一个实例#xff0c;并提供一个全局性的访问点#xff0c;这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化…单例模式是什么 单例模式是一种创建型的软件设计模式。通过单例模式的设计使得创建的类在当前进程中只有唯一一个实例并提供一个全局性的访问点这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化构造函数这样外界就无法自由地创建类对象进而阻止了多个实例的产生。类定义中含有该类的唯一静态私有对象静态变量存放在全局存储区且是唯一的供所有对象使用。用公有的静态函数来获取该实例提供了访问接口。 基础代码  h文件 // // Created by qiaowei on 2023-12-25. //#ifndef RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H #define RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H#include QObjectnamespace 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_Hcpp文件 // // Created by qiaowei on 2023-12-25. //#include main_window_handler.hnamespace 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。饿汉式在类加载的时候就实例化并且创建单例对象。懒汉式是延时加载在需要的时候才创建对象而饿汉式是在虚拟机启动的时候就会创建。懒汉式在多线程中是线程不安全的而饿汉式是不存在多线程安全问题的。 懒汉单例模式需要时再实例化单例对象 懒汉模式中使用QMutexQMutexLocker进行同步锁。 h文件 // // Created by qiaowei on 2023-12-25. //#ifndef RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H #define RADARDATACONTROLLER_MAIN_WINDOW_HANDLER_H#include QObjectnamespace 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_Hcpp文件 // // Created by qiaowei on 2023-12-25. //#include QMutexLocker #include QMutex #include main_window_handler.hnamespace 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 QObjectnamespace 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_Hcpp文件 // // Created by qiaowei on 2023-12-25. //#ifndef RADARDATACONTROLLER_EAGER_SINGLETON_H #define RADARDATACONTROLLER_EAGER_SINGLETON_H#include QObjectnamespace 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 QObjectnamespace 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_Hcpp文件 // // Created by qiaowei on 2023-12-25. //#include eager_singleton_2.hnamespace handler {EagerSingleton2 EagerSingleton2::eager_singleton_;EagerSingleton2* EagerSingleton2::instance() {return eager_singleton_;}EagerSingleton2::~EagerSingleton2() {}EagerSingleton2::EagerSingleton2(QObject *parent) : QObject(parent) {}} // handler 饿汉模式总结 由于在定义静态变量的时候实例化单例类因此在类加载的时候就已经创建了单例对象可确保单例对象的唯一性。 饿汉模式缺点 无论系统运行时是否需要使用该单例对象都会在类加载时创建对象资源利用效率不高。
http://www.w-s-a.com/news/718918/

相关文章:

  • 网站建设动态页面修改删除dnf卖飞机的网站怎么做的
  • 万网是做什么的seo综合
  • 网站关键词分隔符php网站开发平台下载
  • 郑州那家做网站便宜商业计划书免费word版
  • 秦时明月的个人网站怎么做网站开发公司需要招聘哪些人
  • 广告网站建设制作设计服务商安卓app软件定制
  • 公司网站设计与实现中国职业培训在线官方网站
  • 网站服务器空间租用郑州官网网站推广优化
  • 郑州网站建设外包业务wordpress站酷首页
  • 机关门户网站 建设 方案个人怎么申请注册商标
  • 梧州网站建设有哪些九江网站建设优化
  • APP网站建设开发企业发展英文seo招聘
  • 临海市住房和城乡建设规划局网站高校图书馆网站的建设方案
  • 建立门户网站张店易宝网站建设
  • wordpress中英文站点厦门seo顾问屈兴东
  • 邯郸网站建设项目重庆网站备案系统
  • 网站导航容易做黄冈网站建设报价
  • 美橙互联建站网站被截止徐州网站建站
  • 网站班级文化建设视频深圳企业网页设计公司
  • 钦州网站建设公司做宣传网站买什么云服务器
  • 58同城有做网站wordpress怎么改标题和meta
  • 安通建设有限公司网站东莞地铁app
  • 群晖nas做网站滨州教育平台 网站建设
  • 住房城市乡建设部网站装修平台有哪些
  • 小米网站 用什么做的深圳广告公司前十强
  • 勤哲网站开发视频瑞安 网站建设培训
  • 有个蓝色章鱼做标志的网站高端的网站建设怎么做
  • 建站网址导航hao123html网页设计实验总结
  • 西宁市网站建设价格丽水集团网站建设
  • 长宁怎么做网站优化好本机怎么放自己做的网站