news 2026/10/5 6:42:17

C++笔记之单例模式、工厂模式、观察者模式的适用场景是什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++笔记之单例模式、工厂模式、观察者模式的适用场景是什么?

C++笔记之单例模式、工厂模式、观察者模式的适用场景是什么?

code review!

  • 单例模式:系统中某个类只能有一个实例,且该实例需要被全局访问的场景。比如全局状态管理类、配置管理器、日志系统。
  • 工厂模式:工厂模式适用于创建对象的过程比较复杂,或者需要根据不同条件创建不同类型的对象,并且希望将对象的创建与使用解耦的场景。另外简单工厂模式违反了开闭原则。但使用静态注册表可以解决这个问题。
  • 观察者模式:观察者模式适用于一个对象状态改变时,需要通知一系列依赖该状态的对象,从而实现发布-订阅、事件驱动的场景。比如天气变化,超市涨价推送通知给用户。Qt的信号与槽、ROS的发布-订阅者机制就是在一定程度上应用了观察者的思想。

文章目录

  • C++笔记之单例模式、工厂模式、观察者模式的适用场景是什么?
    • 1. 三种设计模式的适用场景
      • 1.1 单例模式适用于什么场景?
      • 1.2 工厂模式适用于什么场景?
        • 1.2.1 简单工厂模式适用于什么情况?
        • 1.2.2 工厂方法模式适用于什么情况?
        • 1.2.3 抽象工厂模式适用于什么情况?
      • 1.3 观察者模式适用于什么场景?
      • 1.4 三种模式如何对比?
    • 2. 观察者模式的典型应用场景有没有天气变化、超市涨价、Qt信号与槽?
    • 3. 观察者模式就是发布者和订阅者吗?
      • 3.1 观察者模式的核心概念是什么?
      • 3.2 观察者模式和发布-订阅模式有什么区别?
    • 4. ROS和Qt的信号与槽机制都是观察者模式吗?
      • 4.1 Qt信号与槽属于哪一类?
      • 4.2 ROS的Topic机制属于哪一类?
      • 4.3 两者的关键差异是什么?
      • 4.4 如何一句话区分?

1. 三种设计模式的适用场景

1.1 单例模式适用于什么场景?

单例模式适用于系统中某个类只能有一个实例,且该实例需要被全局访问的场景。

典型应用包括:

  1. 全局状态管理类:系统需要唯一的状态持有者,避免多处各自维护一份状态导致不一致。
  2. 配置管理器:系统配置全局唯一,多处读取,同时避免重复加载。
  3. 日志系统:整个程序共享一个日志记录器,避免日志文件被多次打开。
  4. 线程池或连接池管理:资源池需要全局统一管理,防止创建多个池造成资源浪费。
  5. 硬件资源访问:例如打印机、显卡等独占资源的管理类。

1.2 工厂模式适用于什么场景?

工厂模式适用于创建对象的过程比较复杂,或者需要根据不同条件创建不同类型的对象,并且希望将对象的创建与使用解耦的场景。

1.2.1 简单工厂模式适用于什么情况?

适用于产品种类较少且相对固定,根据参数创建对应对象的情况。例如根据文件后缀创建不同的解析器,如 JsonParser、XmlParser。

1.2.2 工厂方法模式适用于什么情况?

适用于产品族会扩展,希望遵循开闭原则,新增产品时不修改已有代码的情况。例如日志系统支持文件日志、网络日志、控制台日志,每种日志对应一个具体工厂。

1.2.3 抽象工厂模式适用
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 6:42:09

Materials Studio从建链到弛豫:聚合物无定形盒子模拟全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 6:41:28

西门子机床opc ua协议实现变量读写及NC文件上传下载

1、机床类型机床:SYIL X9 配备五轴转台 机床系统:西门子828D 系统版本:SW262、机床先开通opc ua协议根据说明书开通opc ua协议(需西门子官方授权),开通成功如下图所示3、SINUMERIK OPC UA2.2客户端授权通过…

作者头像 李华
网站建设 2026/10/5 6:38:36

GPUStack Image Playground 完整指南:图像生成与图像编辑实战

后端人工智能模型推理服务集群管理可观测性 【免费下载链接】gpustack A GPU cluster manager for high-performance AI model serving (vLLM, SGLang) and on-demand SSH-accessible GPU instances. 项目地址: https://gitcode.com/gh_mirrors/gp/gpustack 点击查看…

作者头像 李华
网站建设 2026/10/5 6:36:11

lanhu-mcp Docker 部署全指南:从 .env 配置到生产环境反向代理

MCP 服务人工智能AI 应用 【免费下载链接】lanhu-mcp ⚡ 需求分析效率提升 200%!全球首个为 AI 编程时代设计的团队协作 MCP 服务器,自动分析需求自动编写前后端代码,下载切图 项目地址: https://gitcode.com/gh_mirrors/la/lanhu…

作者头像 李华