【JS阅读理解】观察者模式

遇到某个点不通,就多找几个讲解这个点的教程,终究会理解的。

What

什么是观察者模式

概念

  • 正规一点路子的理解:观察者模式是一种设计模式(这不废话么🙄),包含一个对象(叫它"subject "), 用来维持一系列依赖于它(观察者 )的对象,将有关状态的任何变更自动通知给它们。【瞌睡zzz😴】
  • 野路子:张三、李四、王五、周六等等多个人都是(观察者 )炒股的,他们都把个人信息(监听器 )放到了钱多多那。钱多多是个理财经理(目标 ),一有风吹草动就赶紧联系(自动通知)这帮子股民。

关键字整理

一个理财经理(目标),1个或多个股民(观察者),一有变化就发通知

紧急避险Or紧跟风口

钱多多说:"牛市来了,赶紧买进XXX",张三、李四...疯狂行动

突发情况

  • 林林柒作为后来者,同样想找钱多多炒股,怎么办?
  • 周六没赚到钱,就当体验生活的大起大落了,想退出钱多多的客户群体,怎么办?

给钱多多增加、删除客户的能力

小结

钱多多作为一个目标对象("Subject")所具备的能力

  • 通知客户最新动态---Notify
  • 添加新客户---------Add
  • 移除老客户---------Remove

炒股客户们具备的能力

  • 响应迅速,并积极~😎----Update

How

伪代码实现

仅提供思路,不做具体代码展示。😁【能脑补出来,就是真的会了🦾】

js 复制代码
// 目标-钱多多
class Subject{
    constructor() {
        // 用户手机号列表-数组
    }
    
    Add(){
        // 添加新客户-数组push方法
    }
    
    Remove(){
        // 移除老客户-数组过滤方法,filter等
    }
    
    Notify(){
        // 通知客户具体操作-遍历通知
    }
}

// 观察者-炒股客户
class Observer{
    ...
    Update(){
        // 客户操作-buybuybuy(or no-buy😂)
    }
}

总结优缺点

优点:

  • 目标者与观察者,功能耦合度低,都比较专注于自身的功能;观察者被动接受更新,不用时刻专注于目标的变化,时间上解耦; 【实际业务场景中可改善优化的地方有很多,例如:可以关注轮训,定时器等操作】

缺点:

  • 耦合度虽然大大降低,但是仅仅能通知特定时间,不能细分管控(例如:无法像保姆一般照顾有加,精准把控做饭放调料的使用量)
相关推荐
陈随易2 小时前
Vue 编译器换掉 source map,快了三四成
前端·后端·程序员
皮皮林5513 小时前
40亿个QQ号,限制1G内存,如何去重?
程序员
系统集成-鹰翔6 小时前
ERP图片改名后仍命中识别缓存:缓存键、十分钟到期与调用计数
javascript·经验分享·后端
程序员cxuan7 小时前
LobeHub 是真的夯,简直 Super-Agent 最佳实现。
人工智能·后端·程序员
FlyWIHTSKY8 小时前
vue2和vue3有什么区别,用法上有哪些区别
前端·javascript·vue.js
程序员大阳9 小时前
副队长JavaScript教程(66)-本地存储实战:待办事项网页的开发
javascript·json·实战·待办事项·本地存储·案例
AI前端工程狮9 小时前
1 秒超时,3 秒才写完:MCP 写操作的重复提交实测
人工智能·程序员
Dream-Y.ocean10 小时前
鸿蒙PC平台逻控 PLC 编辑器适配实战:基于 Electron 壳方案的纯 JavaScript 梯形图编程与仿真引擎开发
javascript·编辑器·harmonyos
KylinLab10 小时前
TRAE Bot 上手实测:任务级模型固定 DeepSeek-V4.1-Flash,九步流程只留两步工件
程序员
李剑一10 小时前
她是世界上第一位程序员,写下了人类第一行代码,但却因偏执的信任数学计算而早逝
程序员