最简的发布订阅模式

mac2022-06-30  149

发布订阅模式

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

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

转载于:https://www.cnblogs.com/kuishen/p/11453483.html

最新回复(0)