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 工厂模式适用于什么场景?工厂模式适用于创建对象的过程比较复杂,或者需要根据不同条件创建不同类型的对象,并且希望将对象的创建与使用解耦的场景。1.2.1 简单工厂模式适用于什么情况?适用于产品种类较少且相对固定,根据参数创建对应对象的情况。例如根据文件后缀创建不同的解析器,如 JsonParser、XmlParser。1.2.2 工厂方法模式适用于什么情况?适用于产品族会扩展,希望遵循开闭原则,新增产品时不修改已有代码的情况。例如日志系统支持文件日志、网络日志、控制台日志,每种日志对应一个具体工厂。1.2.3 抽象工厂模式适用

相关新闻

ABB机器人与PLC的ModbusTCP通信:Float拆分寄存器与字节序实战

ABB机器人与PLC的ModbusTCP通信:Float拆分寄存器与字节序实战

/* 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:22 阅读更多 →
为什么你的Diff还这么吵?Whiteboard语义Diff查看器:Rust AST差异与WASM插件原理

为什么你的Diff还这么吵?Whiteboard语义Diff查看器:Rust AST差异与WASM插件原理

为什么你的Diff还这么吵?Whiteboard语义Diff查看器:Rust AST差异与WASM插件原理 【免费下载链接】whiteboard open-source canvas for thoughtful software design 项目地址: https://gitcode.com/gh_mirrors/whiteboard36/whiteboard 你的每次提…

2026/10/5 6:41:22 阅读更多 →
基于QGIS与百度地图AOI的城市公园服务半径分析方法

基于QGIS与百度地图AOI的城市公园服务半径分析方法

/* 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:22 阅读更多 →

最新新闻

八自由度车辆模型解析:从动力学原理到TruckSim对标实战

八自由度车辆模型解析:从动力学原理到TruckSim对标实战

1. 项目概述与整体设计思路1.1 为什么是八自由度,而不是七自由度先说结论:八自由度车辆模型是传统七自由度模型的“补课版”,多出来的那个自由度,通常就是车身的侧倾运动。不要小看这个补充,它直接决定了模型在中高速转…

2026/10/5 7:51:51 阅读更多 →
改进粒子群算法求解建筑光储系统规划运行综合优化:Python复现实践

改进粒子群算法求解建筑光储系统规划运行综合优化:Python复现实践

最近在复现一篇EI检索的论文,题目翻译过来是《基于改进粒子群算法求解的建筑集成光储系统规划运行综合优化方法》。原论文的思路很清晰:把屋顶光伏、储能电池和建筑负荷揉成一个优化问题,用改进粒子群算法在两个层面同时寻优,既决…

2026/10/5 7:51:51 阅读更多 →
插件加载失败与激活异常排查指南:从报错到解决

插件加载失败与激活异常排查指南:从报错到解决

写插件踩坑这一年,我收到最多的求助就是“failed to load plugins”和“web boot: xx entries did not activate”。报错信息永远半遮半掩,插件名、激活逻辑、宿主版本三样东西搅在一起,新手一看就头大。我前段时间集中排查过一批真实项目里的…

2026/10/5 7:51:51 阅读更多 →
TikTok客户端校招面试复盘:考点拆解与准备思路

TikTok客户端校招面试复盘:考点拆解与准备思路

不是撞大运,TikTok客户端校招面经这份复盘,我拖了快一个月才动笔。每次想写,都觉得面试里真正有价值的部分很难用几句话说清楚。真正面完一轮以后你会发现,这轮面试和我之前准备的普通客户端面经很不一样,不是背概念、…

2026/10/5 7:51:51 阅读更多 →
cJSON内存泄漏排查指南:cJSON_Delete与free的正确使用

cJSON内存泄漏排查指南:cJSON_Delete与free的正确使用

/* 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 7:51:51 阅读更多 →
lavaan结构方程模型实战:潜变量、复合变量与复杂数据全解析

lavaan结构方程模型实战:潜变量、复合变量与复杂数据全解析

做结构方程模型这些年,我最常被问到的就是“lavaan到底怎么上手”、“潜变量和复合变量有什么区别”、“我的数据是分组的/嵌套的/追踪的,还能不能跑SEM”。说实话,这些问题几乎覆盖了lavaan在实际科研与业务分析中的全部核心场景。作为R生态…

2026/10/5 7:50:50 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* 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 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* 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 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* 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 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* 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 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* 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 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/4 20:14:29 阅读更多 →