美文网首页Vue 面试题及答案
学习 Vue 中观察者模式

学习 Vue 中观察者模式

作者: 阿畅_ | 来源:发表于2020-09-15 14:38 被阅读0次

贴一个 Vue 中源码的观察者模式源码

image.png

手动实现观察者模式

// 发布者-目标
class Dep {
  constructor() {
    // 记录所有的订阅者
    this.subs = []
  }
  // 添加订阅者
  addSub(sub) {
    // 判断订阅者是否存在,并且有update 方法
    if (sub && sub.update) {
      this.subs.push(sub)
    }
  }
  // 发布通知
  notify() {
    // 循环发布通知
    this.subs.forEach(s => {
      s.update()
    })
  }
}

// 订阅者-观察者
class Watcher {
  update() {
    console.log('update --->')
  }
}

let dep = new Dep
let watcher = new Watcher
// 添加订阅者
dep.addSub(watcher)
// 发布执行
dep.notify()

// 执行结果 update --->

观察者模式和订阅发布模式的区别

  • 观察者模式是由具体的目标调用,例如:当事件触发 Dep 就会去调用观察者的方法,所以订阅者和观察者之间是存在依赖的。
  • 发布订阅模式是由统一的调度中心调用,因为发布者和订阅者不需要知道对方的存在。
    点击查看发布订阅模式

相关文章

  • 学习 Vue 中观察者模式

    贴一个 Vue 中源码的观察者模式源码 手动实现观察者模式 观察者模式和订阅发布模式的区别 观察者模式是由具体的目...

  • 【设计模式】观察者模式 和 发布订阅模式

    目录:观察者模式发布-订阅模式观察者模式和发布订阅模式的区别实现vue数据双向绑定 (1)观察者模式 (1)概念 ...

  • javascript设计模式之观察者模式

    要理解观察者模式,可以类比vue中的EventBus,其实就是一个全局的观察者对象($bus),上面有注册事件($...

  • (八)观察者 - watch

    本章将介绍的是Vue3.x中的观察者watch,区别于Vue2.x,采用了函数的模式实现 1、概述:Vue2.x中...

  • 设计模式之观察者模式

    观察者模式 Rxjava中运用到了观察者模式,那什么是观察者模式呢,现在来学习一下。正所谓观察,就是看,细察事物的...

  • 观察者模式理解和实践

    观察者模式理解和实践 最近在看观察者模式,于是乎就结合vue写了个小例子,算是实践一下观察者模式吧。 实例地址 观...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • vue2

    Vue的双向绑定原理(扩展) Object.defineProperty 观察者模式(发布-订阅模式) 计算属性 ...

  • 设计模式之观察者模式

    设计模式之观察者模式 本篇是设计模式系列博客的第四篇,本篇主要学习设计模式中的第二个行为型模式---观察者模式。 ...

  • RxJava2

    工程导入 Observable:在观察者模式中称为“被观察者”;Observer:观察者模式中的“观察者”,可接收...

网友评论

    本文标题:学习 Vue 中观察者模式

    本文链接:https://www.haomeiwen.com/subject/eflfyktx.html