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

玩转观察者模式

文章目录

  • 什么是观察者模式
  • 解决方案
  • 结构
  • 适用场景
  • 实现方式
  • 观察者模式优缺点
    • 优点:
    • 缺点:


什么是观察者模式

观察者模式通俗点解释就是你在观察别人,别人有什么变化,你就做出什么调整。观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。

假如你有两种类型的对象: ​ 顾客和商店。 顾客对某个特定品牌的产品非常感兴趣 (例如最新型号的 iPhone 手机), 而该产品很快将会在商店里出售。

顾客可以每天来商店看看产品是否到货。 但如果商品尚未到货时, 绝大多数来到商店的顾客都会空手而归。
在这里插入图片描述
另一方面, 每次新产品到货时, 商店可以向所有顾客发送邮件 (可能会被视为垃圾邮件)。 这样, 部分顾客就无需反复前往商店了, 但也可能会惹恼对新产品没有兴趣的其他顾客。

我们似乎遇到了一个矛盾: 要么让顾客浪费时间检查产品是否到货, 要么让商店浪费资源去通知没有需求的顾客。

解决方案

拥有一些值得关注的状态的对象通常被称为目标, 由于它要将自身的状态改变通知给其他对象, 我们也将其称为发布者 (publishe


http://www.kler.cn/a/542277.html

相关文章:

  • DeepSeek-R1技术革命:用强化学习重塑大语言模型的推理能力
  • win32汇编环境,对线程的创建与操作示例二
  • 怎麼使用靜態住宅IP進行多社媒帳號管理
  • 第四十章:职场转折:突破困境,重新出发
  • MongoDB进阶篇-索引
  • 问题:通过策略模式+工厂模式+模板方法模式实现ifelse优化
  • C# 数据验证Regex
  • 【MySQL】我在广州学Mysql 系列—— 数据备份与还原
  • Python的那些事第十五篇:数据分析中的“三剑客”NumPy、Pandas与Matplotlib
  • 【Elasticsearch】 查询性能优化
  • win11 python opencv作图像匹配小结
  • idea插件开发,如何获取idea设置的系统语言
  • Render上后端部署Springboot + 前端Vue 问题及解决方案汇总
  • vscode关闭后如何恢复在远程服务器的终端程序运行界面
  • 无人机图像拼接数据的可视化与制图技术:以植被监测为例
  • MATLAB联动本地部署的DeepSeek模型
  • 关于FANUC机器人示教器型号的说明
  • 在Vue项目中Vuex和松花的作用和区别
  • JUnit断言方法详解与实战
  • Svelte前端框架
  • 活动预告 |【Part1】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载
  • 机器视觉3D的测量痛点
  • java基础6(黑马)
  • 使用itextpdf动态生成PDF
  • OpenCV 相机标定流程指南
  • 前端技术学习——ES6核心基础