最简的发布订阅模式

发布订阅模式

  1.  个人仅以最简单的发布订阅模式呈现该模式的思想,主要注重该思想的理解,同于多处理异步,切片事件等操作

    发布订阅的理解(个人)

    1.  主要原理是依次去获取调度中心的状态,整个数据是在调度中心获取的, 发布者和观察者之间不存在直接的联系

    2.  观察者模式中却又包含者发布订阅模式, 有发布者(被观察者)和订阅者(观察者)

    3. 发布订阅模式其实 就是发布者和订阅者解耦,在开发中经常遇到异步, 多层逻辑面向过程的处理方式,分解为多个处理的过程(面向切片(AOP))是的高耦合的过程进行分解,任何统一处理

    4. (发布者: 只发布通知,不关系处理过程)发布通知 到 (统一处理站)调度中心后, 有订阅者发出事件去调度中心订阅,调度中心触发对应的结果

 2. 简单的发布订阅方式

   

// 方式1: 三个对象 
const arr = [] // 调度中心
class Publisher { // 发布者
  add (...args) { // 事件发出
    arr.push(...args) // 调度中心收集事件
  }
}
class Subscriber { // 订阅者
  emit() { //事件订阅
    arr.forEach(fn => fn()) 
  }
}
let event1 = () => {
  console.log('事件1')
} 
let event2 = () => {
  console.log('事件2')
}
let p1 = new Publisher(); // 创建一个订阅者
p1.add(event1, event2) // 调用add 向调度中心添加两个事件

let s1 = new Subscriber;
s1.emit()

 

// 方式2 捆绑式 直接声明的事件绑定到调度中心
let event1 = () => {
  console.log('事件1')
} 
let event2 = () => {
  console.log('事件2')
}
class Subscriber{
constructor (...args) {
this.arr = args
}
emit() {
this.arr.forEach(fn => fn())
}
}

let s2 = new Subscriber(event1, event2)
s2.emit() // 订阅

如有错误:欢迎指正,谢谢😊

posted @ 2019-09-03 15:46  KuiShen  阅读(362)  评论(0编辑  收藏  举报