js全局的发布——订阅模式

本文介绍了如何使用全局的Event对象实现发布-订阅模式,以此解决资源浪费和对象耦合的问题。通过一个中介者角色的Event对象,订阅者无需知道发布者,发布者也无需关心接收者,实现了松耦合的事件通信。
摘要由CSDN通过智能技术生成
<h1>全局的发布——订阅</h1>
   <p>回想上一章的通用的发布—订阅模式,我们给Event对象及saleOffices对象都添加了订阅—发布的功能,这里存在两个问题。</p>
   <p>1.我们给每个发布者对象都添加了listen和trigger方法,以及一个缓存列表clientList,这其实是一种资源浪费。</p>
   <p>2.小明跟售楼处对象还是存在一定的耦合性,小明至少要知道售楼处对象的名字是saleOffices,才能顺利的订阅到事件</p>
   <p>事实上,发布——订阅模式可以用一个全局的Event对象来实现,订阅者不需要了解消息来自哪个发布者,发布者也不需要消息会推送到哪些订阅者,
   Event作为一个类似”中介者“的角色,把订阅者和发布者联系起来。代码如下:</p>
   <script>
      var Event = (function(){
         var clientList = {},
             listen,
             trigger,
             remove;
         
         listen = function( key, fn ){
            if( !clientList[ key ] ){
               clientList[ key ] = [];
            };
            clientList[ key ].push( fn );
         };
         
         trigger = function(){
             var key = Array.prototype.shift.apply( arguments 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值