最简的发布订阅模式
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发布-订阅模式 ( 使用代码实现发布-订阅模式 )