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

玩转观察者模式

文章目录

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


什么是观察者模式

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

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

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

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

解决方案

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

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

相关文章:

  • 【Linux】进程间关系与守护进程
  • MySQL 记录
  • c# textbox 设置不获取光标
  • 微信小程序 - 组件和样式
  • Django简介
  • 避雷,Ubuntu通过ollama本地化部署deepseek,open-webui前端显示
  • 链表(典型算法思想)—— OJ例题算法解析思路
  • android启动整体流程
  • Java面试——Tomcat
  • DeepSeek各版本说明与优缺点分析
  • ASP.NET Core 面试宝典【刷题系列】
  • 【大语言模型】在大语言模型中,user、assistant、system 三种角色的定位和功能有何不同。
  • HCIA项目实践--RIP的拓展配置
  • 通过命令行运行py文件与通过ide运行py文件,对文件中模块的引用方式的影响
  • 反射概率以及一些基本API的使用
  • BUU38 [RoarCTF 2019]Easy Java1
  • DeePseek结合PS!批量处理图片的方法教程
  • AnythingLLM打造私有知识库
  • 微软AutoGen高级功能——Serializing Components
  • 【原创】springboot+vue考试考场座位安排管理系统设计与实现
  • 【架构设计】微服务架构模型:常见模型的对比和分析
  • 更高效实用 vscode 的常用设置
  • 全排列(力扣46)
  • RFM模型-数据清洗
  • 基于mediapipe深度学习的手势数字识别系统python源码
  • 20250214实测飞凌的OK3588-C_Linux5.10.209+Qt5.15.10_用户资料_R1的USB2.0的速度为29.0 MB/s
  • 香港VPS服务器如何排查和修复 MySQL 数据库连接失败的问题
  • 从图像中提取的每行数字作为一张完整的图片,而不是每个数字单独成为一张图片
  • 教程:使用 Vue 3 和 arco 实现表格合并
  • MySQL 数据库定时任务及进阶学习