美文网首页
手写发布订阅

手写发布订阅

作者: 明明你也一样 | 来源:发表于2019-09-23 11:50 被阅读0次

简介

发布-订阅模式又叫做观察者模式,他定义了一种一对多的依赖关系,即当一个对象的状态发生改变的时候,所有依赖他的对象都会得到通知。举例来说的话,就像微博订阅一个主题,它会在更新的时候通知你。

代码实现

Subject是构造函数,new Subject() 创建一个主题对象,该对象内部维护订阅当前主题的观察者数组。主题对象上有一些方法,如添加观察者(addObserver)、删除观察者(removeObserver)、通知观察者更新(notify)。 当notify 时实际上调用全部观察者 observer 自身的 update 方法。

class Subject {
  constructor() {
    this.observers = []
  }
  addObserver(observer) {
    this.observers.push(observer)
  }
  removeObserver(observer) {
    var index = this.observers.indexOf(observer)
    if(index > -1){
      this.observers.splice(index, 1)
    }
  }
  notify() {
    this.observers.forEach(observer=> {
      observer.update()
    })
  }
}


class Observer{
  constructor() {
    this.update = function() {}
  }
  subscribeTo(subject) {
    subject.addObserver(this)
  }
}  

相关文章

  • 手写发布订阅

    简介 发布-订阅模式又叫做观察者模式,他定义了一种一对多的依赖关系,即当一个对象的状态发生改变的时候,所有依赖他的...

  • 前端面试题笔记

    模板替换,发布订阅,手写promise,手写bind 模板替换 let tem = '我是{{name}},今年{...

  • 手写一个发布订阅模式

  • 如何手写一个简单发布订阅模式

    面试过程中很多面试官如何手写个发布订阅模式下面就是一个简单的demo

  • 手写promise

    这里是鄙人博客中《手写 Promise》的传送门 1.解决异步调用resolve、reject问题使用类似订阅发布...

  • 发布-订阅

    参考 https://www.cnblogs.com/shenh/p/10497244.html 模式一:fan...

  • 发布订阅

    https://developer.mozilla.org/zh-CN/docs/Web/API/EventTar...

  • 发布订阅

    期望的数据类型{event: [fn1, fn2],}

  • 发布订阅

    //观察者模式和订阅发布模式的不同点在于,订阅发布模式 订阅者和发布者是解耦的,他们的关联是通过第三方来的//例子:

  • 发布订阅

网友评论

      本文标题:手写发布订阅

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