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

观察者模式是什么:从订阅报纸到代码通知

推荐一个学习网站,http://easelearningai.com  输入学习主题,会根据你的知识背景,帮你把学习内容讲得通俗易懂。
 

一句话定调

简单说,观察者模式就是**“你订阅了,我就通知你”**——就像你订了一份报纸,报社每天印好新报纸,就会送到你家门口,你不用天天跑去报社问“今天有报纸吗?”


第一部分:从生活场景说起

场景一:你订了一份报纸

想象一下,你住在一个小区里,每天最期待的就是早上的报纸。以前没有互联网的时候,你是怎么拿到报纸的?

  • 你不会每天跑到报社门口去问:“今天报纸印好了吗?”
  • 你也不会在小区门口傻等,生怕错过送报员。
  • 你只需要做一件事:订阅。填一张表,留下地址,然后该干嘛干嘛。

报社那边呢?他们每天凌晨印好报纸,然后根据订阅名单,挨家挨户送。谁订阅了,谁就能收到;没订阅的人,报社根本不会管。

这就是观察者模式最核心的思想:把“主动询问”变成“被动接收”

场景二:你的手机推送通知

再想想你手机上的新闻App。你下载了它,它不会天天给你推送所有新闻——那你会烦死的。但你关注了几个频道,比如“科技”和“体育”。然后,每当这些频道有新内容,App就会弹出一条通知:“科技频道更新啦!”

  • 你(观察者)订阅了某个频道(被观察对象)。
  • 频道一有变化(新文章),就自动通知你。
  • 你不需要每隔5分钟打开App刷新。

看,同样的逻辑。


第二部分:为什么需要这个“发明”?

问题:没有观察者模式的世界

让我们回到没有观察者模式的“原始社会”。假设你是一个软件开发者,要做一个天气App。你的App需要从气象局获取温度数据,然后展示给用户。

<
http://www.jsqmd.com/news/1001711/

相关文章:

  • JVM篇1--JVM内存结构
  • 雍俊海Java教程第二版课后编程题完整参考实现(含CH2/CH6/CH8)
  • 【计算机毕业设计案例】基于 SpringBoot 的自由行旅游行程规划系统的设计与实现(程序+文档+讲解+定制)
  • 全局计时器、智能提醒与UI交互实现
  • 解密Apollo配置中心的高可用设计:从长轮询到本地缓存,你的配置真的安全吗?
  • 从Q_PROPERTY到MVVM:手把手教你用属性系统重构臃肿的Qt业务逻辑
  • SpringBoot 3.2项目实战:除了虚拟线程,JDK21的这些新特性更值得你关注
  • 孤舟笔记 分布式与微服务篇二十四 IaaS、PaaS、SaaS有啥区别?三个字母搞懂云计算三层模型
  • 手机号找回QQ号完整指南:3分钟破解账号记忆难题
  • Quake3e:现代图形API如何重塑经典竞技场引擎的技术架构
  • VC++实现的IF-ELSE语句LL(1)语法分析与四元式生成工程
  • 从上传到播放:手把手模拟一次YouTube视频的‘奇幻漂流’(附FFmpeg转码命令实操)
  • CAD二次开发避坑指南:VBA选择集过滤时,为什么你的‘*Polyline’选不中所有多段线?
  • 今天摸鱼了吗APP开发实战:基于HarmonyOS API 24的多层Stack与定时器应用
  • Flutter 实战:simple_paint 手绘画板的手势采样、CustomPainter 绘制与鸿蒙适配解析
  • 突破60帧枷锁:原神帧率解锁工具完全指南
  • NPOI 2.5.1.0 .NET 4.0 全依赖二进制库包(含XML文档与Excel全格式支持)
  • 2026江苏技术过硬宣传片制作机构排行 核心维度实测对比 - 奔跑123
  • 从‘烤机’到‘炼丹’:聊聊不同场景下CUDA线程配置的实战经验(附V100/A100对比)
  • OpenCore Configurator:黑苹果引导配置的终极可视化工具指南
  • 性价比高的3%AFFF/AR抗溶性水成膜泡沫灭火剂厂家推荐:浙江金瑞恒守护能源安全 - 品牌速递
  • 国内售后完善的教学能力比赛拍摄服务商综合排行2026 - 奔跑123
  • NXP i.MX 6 SABRE开发板:从硬件参考设计到产品实战全解析
  • ARM7汽车MCU MAC7100架构解析与eDMA、FlexCAN实战应用
  • 面向对象:this关键字;构造器
  • Claude进入受监管系统前,接入层应该先怎么设计
  • 2026年AI精准获客TOP5技巧,让您的业务增长不再难 - 轩铭卿
  • CRISPR-Cas9新玩法:像调光开关一样,用uORF精细调控植物基因表达
  • 2026携号转网API选型全指南:直连接口、代码示例与生产环境踩坑实录
  • Win7系统下惠普M1005激光一体机即装即用驱动包(32/64位双版)