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

工信部资质查询网站天津小程序网站开发公司

工信部资质查询网站,天津小程序网站开发公司,苏州电信网站备案,临沂网站建设公司1-单例模式定义 单例模式是一种创建型设计模式,它确保一个类在程序运行期间只有一个实例存在,并提供一个全局访问点。这个模式在需要全局控制资源(如配置管理、日志系统、线程池等)时非常有用。 1.1 单例模式的特殊点 1.私有构造…

1-单例模式定义

单例模式是一种创建型设计模式,它确保一个类在程序运行期间只有一个实例存在,并提供一个全局访问点。这个模式在需要全局控制资源(如配置管理、日志系统、线程池等)时非常有用。

 

1.1 单例模式的特殊点

1.私有构造函数:防止外部通过new关键字创建实例。

2.静态实例:通过静态成员变量或静态方法提供全局访问点。

3.防止拷贝构造和赋值操作:防止通过拷贝或赋值创建多个实例。

4.线程安全:在多线程环境下,确保单例的唯一性。

     2-实现

    我们这里实现有两种方式:1  懒汉式;2  饿汉式。

    2.1- 懒汉式单例(Lazy )

    优缺点分析:

    优点
    • 延迟初始化:实例在需要时才被创建,可以节省资源。
    缺点
    • 线程不安全:在多线程环境下,多个线程可能同时调用getInstance(),导致创建多个实例。
    • 性能问题:每次调用getInstance()都需要进行线程同步,影响性能

    代码实现:

    
    class Singleton {
    public:// 提供一个全局访问点static Singleton* getInstance() {// 双重检查锁定,提高性能,并且在加锁前先检查实例是否已经创建,避免不必要的锁开销。if (instance == nullptr) {lock_guard<mutex> lock(mtx);if (instance == nullptr) {instance = new Singleton();}}return instance;}// 防止拷贝构造和赋值操作Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;private:// 构造函数设为私有,防止外部创建实例Singleton() {cout << "Singleton instance created." << endl;}// 静态实例指针static Singleton* instance;// 互斥锁确保在多线程环境下只有一个线程能够创建实例。static smutex mtx;
    };// 初始化静态成员
    Singleton* Singleton::instance = nullptr;
    mutex Singleton::mtx;// 使用示例
    int main() {Singleton* s1 = Singleton::getInstance();Singleton* s2 = Singleton::getInstance();// 检查两个指针是否指向同一个实例if (s1 == s2) {cout << "s1 and s2 are the same instance." << endl;}else {cout << "s1 and s2 are different instances." << sendl;}return 0;
    }

    2. 饿汉式单例(Eager )

     

    优缺点分析

    优点
    • 线程安全:实例在程序启动时就被创建,避免了多线程环境下的竞争条件。
    • 简单易用:实现简单,不需要额外的同步机制。
    缺点
    • 资源浪费:如果实例在程序运行期间从未被使用,会浪费内存资源。
    • 启动时间增加:在实例创建过程中,如果初始化过程复杂,会增加程序的启动时间。

    代码实现: 

    class Singleton {
    public:// 提供一个全局访问点static Singleton& getInstance() {return instance;}// 防止拷贝构造和赋值操作Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;private:// 构造函数设为私有,防止外部创建实例Singleton() {cout << "Singleton instance created." << endl;}// 静态实例在程序启动时就会被创建,静态存储区保证线程安全static Singleton instance;
    };// 初始化静态成员
    Singleton Singleton::instance;// 使用示例
    int main() {Singleton& s1 = Singleton::getInstance();Singleton& s2 = Singleton::getInstance();// 检查两个引用是否指向同一个实例if (&s1 == &s2) {cout << "s1 and s2 are the same instance." << endl;}else {cout << "s1 and s2 are different instances." << endl;}return 0;
    }

    如果有错误还请评论区纠正 

     

     

     

    http://www.dtcms.com/a/444766.html

    相关文章:

  1. 网站后台申请邮箱天津做网站的公司
  2. 怎么注册自己网站wordpress word粘贴
  3. 如何快速提高网站关键词排名wordpress 退出登录
  4. 厦门网站推广公司网站建设化学图片
  5. 怎样选择 网站建设桐乡市城乡规划建设局网站
  6. 开一家网站建设公司要多少钱wordpress网站制作app
  7. 网站建设ssc源码做网站数据库设计
  8. 石家庄网站seo服务医疗网站建设策划
  9. 网站开发一般用什么服务器网站跳出率因素
  10. 设计公司网站设计标签下载wordpress
  11. 怎么建设一个购物网站西安 房产网站建设
  12. 网站设计方案案例分析微信网页版注册
  13. 福田手机网站建设wordpress的标签设置主页
  14. 网站的营销与推广建站是什么东西
  15. 求个网站你懂我的意思2021网站建设制作周期
  16. wordpress 音乐网站19楼网站模板
  17. 佛山新网站建设怎么样合肥网站制作联系方式
  18. 西咸新区规划建设局网站网络推广营销服务
  19. 企业怎么在网站上做宣传搭建网站的网站
  20. js验证网站广告联盟下载app
  21. 成都建设银行网站视觉设计工作室
  22. 金华建设监理协会网站网站结构 扁平结构 树状结构
  23. 国外建站网址wordpress链接mysql
  24. 青岛做个网站多少钱标准网站建设哪家便宜
  25. 做中小型网站最好的架构苏州园区房价
  26. wordpress 网站维护棋牌软件开发
  27. 专利协会网站建设方案涪陵网站设计
  28. 英文注册查询网站中国空间雷达卫星
  29. 乐山住房和规划建设局门户网站网站开发前端课程
  30. 网站开发可退税网站怎么看被百度收录