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

一篇文章带你搞懂“设计模式”! - - 观察者模式(17)

观察者模式

  1. 观察者模式是一种行为型设计模式,又被称为"发布-订阅"模式,它定义了对象之间的一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。
  2. 观察者模式的关注点是对象之间的通信以及被观察对象的状态。

观察者模式工作原理

核心成员:

  • 被观察者(Subject):被观察的对象,它的内部包含了观察者对象的集合,并提供了添加、通知和删除观察者对象的统一接口。
  • 观察者(Observer):接收Subject通知的对象,它订阅了Subject的状态,并提供了更新操作的统一接口。
  • 具体的被观察者(ConcreteSubject):包含Subject类接口的具体实现,维护了观察者的列表,自身状态发生变化时通知所有的观察者。
  • 具体的观察者(ConcreteObserver):包含Observer类接口的具体实现,提供了更新操作的具体实现细节,一旦收到Subject的通知便进行更新操作。


观察者模式工作流程

  1. 被观察者维护一个观察者的列表,并提供了管理和通知观察者的方法。
  2. 观察者与被观察者绑定(attach),并将自己添加到观察者列表中。
  3. 当被观察者的状态发生变化时,开始通知观察者,通知的方式一般是遍历观察者列表,遍历时会调用每个观察者的更新方法
  4. 观察者完成具体的更新操作。



观察者模式优缺点

观察者模式的优点:

  • 符合"开闭原则"的要求。
  • 支持广播的通信方式。
  • 支持事件驱动编程。
  • 可以动态添加观察者,代码扩展性好。

观察者模式的缺点:

  • 每次状态变化都要遍历所有观察者,性能开销大。
  • 每次状态变化都要通知所有的观察者,通信时间变长。
  • 观察者数量过多会使代码的可读性变差。
  • 当有多个客户端操作观察者的删除时,会带来数据安全问题。
http://www.jsqmd.com/news/442445/

相关文章:

  • 从零开始开发 CNBlog MCP 工具
  • Z-BlogPHP版本历史 zblog网站常见问题1.7 Tenet修复
  • Qwen-Image-2512-Pixel-Art-LoRA效果展示:多主体交互场景像素化逻辑验证
  • 北京搬家公司服务哪家好?盘点5家口碑与实力并存的日式搬家品牌 - 资讯焦点
  • sudo权限添加
  • 2026 年证券纠纷律师专业实力排行榜 - 资讯焦点
  • 高价 + 安全 + 快速:卡券回收平台优选名单(2026 最新) - 资讯焦点
  • 【开题答辩全过程】以 基于SpringBoot私人牙医管理系统的设计与实现为例,包含答辩的问题和答案
  • Z-BlogPHP网站的c_option.php配置文件在哪里zblog网站常见问题
  • 高新能源渗透率园区源网荷储一体化规划及智慧能源管理系统 安科瑞 王文杰
  • 实战演练:用 CrewAI 搭建一套自动化的自媒体内容创作流水线
  • 【光纤通信】10 Gbps正交相位移键控QPSK光纤通信系统(真实的光纤损伤并分析系统在不同条件下的性能)【含Matlab源码 15103期】
  • VPS
  • 工商业储能升级新选择:Acrel-2000ESGXW 能量管理系统,赋能储能价值进阶 安科瑞 王文杰
  • SiameseUIE惊艳案例:含标点/数字/英文混排文本的稳定抽取
  • PHP抽象的核心概念的庖丁解牛
  • 【笔试真题】- 华子-2026.02.04-算法岗
  • 微信小程序开发实战:集成Lingbot-Depth-Pretrain-ViTL-14实现手机端深度测量
  • PHP多态的核心概念的庖丁解牛
  • 打造属于自己的物联网平台
  • 【笔试真题】- 华子-2026.03.04-算法岗
  • 联手攻克具身智能机器人固态电池,均胜电子与恩力动力达成战略合作
  • 闭眼入!10个AI论文网站测评:专科生毕业论文+开题报告高效写作指南
  • Harmonyos应用实例七:6-10的认识——数量感知与数序
  • metinfo米拓cms忘记管理员密码怎么办?重置还是找回,附修改方法和代码
  • 从 Excel 到周报,只需一条命令:本地大模型办公自动化实战教程:用 Ollama + Qwen3.5 自动分析 Excel 报表并生成周报数据分析段(含完整脚本)
  • 吐血推荐 9个AI论文软件:本科生毕业论文+开题报告写作全测评
  • Cogito-V1-Preview-Llama-3B入门教程:ComfyUI可视化工作流搭建
  • Z-BlogPHP固定域名出错不能登入 zblog网站常见问题
  • 2026 本地 AI 运维助手实战:用 Ollama + Qwen3.5 自动生成技术监控周报(含完整脚本)