javascript設(shè)計(jì)模式——中介者模式

中介者模式:通過中介者對象封裝一些列對象之間的交互,使對象之間不再相互引用,降低他們之間的耦合。

中介者和觀察者對比:同觀察者模式一樣,中介者模式的主要業(yè)務(wù)也是通過模塊間或者對象見的復(fù)雜通信,來解決模塊間或?qū)ο箝g的耦合。對于中介者對象的本質(zhì)是封裝多個(gè)對象的急哦阿虎,并且這些對象的交互一般都是在中介者內(nèi)部實(shí)現(xiàn)的。雖然兩種模式都是通過消息傳遞實(shí)現(xiàn)對象間或者模塊間的解耦。觀察者模式中的訂閱者是雙向的,既可以是消息的發(fā)布者,也可以是消息的訂閱者。而中介者模式中,訂閱者是單向的,只能是消息的訂閱者。而消息統(tǒng)一由中介者對象發(fā)布,所有的訂閱者對象間接地被中介者管理。

  // 創(chuàng)建中介者
  var Mediator = function() {
    var _msg = {}
    return {
      register: function(type, action) {
        if (!_msg[type]) _msg[type] = []
        _msg[type].push(action)
      },
      send: function(type) {
        if(_msg[type]) {
          for (var i = 0; i < _msg[type].length; i++) {
            _msg[type][i] && _msg[type][i]()
          }
        }
      }
    }
  }()

  Mediator.register('demo', function () {
    console.log('first')
  })
  Mediator.register('demo', function () {
    console.log('second')
  })
  Mediator.send('demo')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容