编程语言
首页 > 编程语言> > javaScript设计模式:发布订阅模式

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,模式,events,arg,设计模式,event,客户端
来源: https://www.cnblogs.com/ZheOneAndOnly/p/16089994.html