javaScript设计模式:发布订阅模式
2022/4/2 9:19:27
本文主要是介绍javaScript设计模式:发布订阅模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
发布订阅模式的思想是在观察者模式的基础上演变而来,在观察者模式中客户端监听到对象某个行为就触发对应任务程序。而在发布订阅模式中依然基于这个核心思想,所以有时候也会将两者认为是同一种设计模式。它们的不同之处在于观察者模式中的客户端与服务端是相互耦合的,即服务端对象直接绑定客户端的监听任务,客户端直接绑定监听服务端的行为。而在发布订阅模式中,客户端与服务端是解耦的,它们彼此不相互绑定,两者的联系由中间的通道模块绑定实现连接。发布订阅模式相对于观察者模式实现了解耦,相互之间互不干扰。
1 //发布者 2 let publisher = { 3 data:0, 4 publishTopic:function(event){ 5 let arg = arguments.length > 1 ? Array.prototype.slice.call(arguments,1) : [undefined]; 6 channel.pub(event,...arg); 7 } 8 }; 9 //通道 10 let channel = { 11 events:{}, 12 pub:function(event,arg){ 13 //实现发布 14 if(!this.events[event]){ 15 return; 16 } 17 this.events[event].forEach(ele => { 18 ele(arg); 19 }); 20 }, 21 sub:function(event,callback){ 22 //实现订阅 23 if(!this.events[event]){ 24 this.events[event] = []; 25 } 26 this.events[event].push(callback); 27 } 28 }; 29 //订阅者 30 let subscribe = { 31 subscribeTopics:function(event,callback){ 32 channel.sub(event,callback); 33 } 34 }; 35 36 //订阅 37 subscribe.subscribeTopics("月刊",data =>{ 38 console.log(data); 39 }); 40 //发布 41 publisher.publishTopic("月刊","aaa");
这篇关于javaScript设计模式:发布订阅模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?