最简的发布订阅模式

Posted kuishen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最简的发布订阅模式相关的知识,希望对你有一定的参考价值。

发布订阅模式

  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() // 订阅

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

以上是关于最简的发布订阅模式的主要内容,如果未能解决你的问题,请参考以下文章

EventBus发布-订阅模式 ( 使用代码实现发布-订阅模式 )

从发布-订阅模式到消息队列

观察者模式 vs 发布-订阅模式

EventBus发布-订阅模式 ( Android 中使用 发布-订阅模式 进行通信 )

设计模式-发布订阅模式(javaScript)

设计模式Javascript设计模式——订阅发布模式