Vue观察者模式

简单的来说一下在别人问你这个问题的时候怎么来回答它

前端新人,如有错误求大佬指出~求教💝

情景复现

大佬提问:“什么是观察者模式?

我的回答:“观察者模式即一个对象被多个对象所依赖,当被依赖的对象发生更新时,会自动通知所有依赖的对象。体现在Vue中就是在在get数据的时候进行依赖收集,在set数据的时候会发布消息通知订阅者,触发监听回调,更新视图。

例如:抖音上的小杨哥,当小杨哥在抖音开启直播时,会自动通知所有的粉丝。 小杨哥:直播间海量福利商品,赶紧来抢购吧!

小杨哥为目标   抖友为观察者

目标应该具备

  • 收集观察者
  • 删除观察者
  • 通知观察者
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible"
    content="IE=edge">
  <meta name="viewport"
    content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    class XYG {
      constructor(name, age) {
        this.name = name
        this.age = age
        this.douyou = []
      }

      add(douyou) {
        // 收集观察者
        this.douyou.push(douyou)
      }

      // 通知观察者
      notify() {
        this.douyou.forEach(item => {
          console.log(item)
          item.update(this.name + '冷酸灵牙膏秒杀16件,仅39.99!')
        })
      }
    }

    // 目标
    const xyg = new XYG('小杨哥', 18)
    console.log(xyg)

    class douyou {
      constructor(name, age) {
        this.name = name
        this.age = age
      }

      update(msg) {
        console.log(this.name + '接收通知' + msg)
      }
    }

    // 观察者
    const douyou1 = new douyou('抖友1号', 19)
    const douyou2 = new douyou('抖友2号', 20)
    const douyou3 = new douyou('抖友3号', 20)

    // 收集依赖
    xyg.add(douyou1)
    xyg.add(douyou2)
    xyg.add(douyou3)

    // 通知
    xyg.notify()

    console.log(xyg.douyou)

  </script>
</body>

</html>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值