溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用javascript中的中介者模式

發布時間:2020-08-01 14:48:22 來源:億速云 閱讀:157 作者:小豬 欄目:web開發

這篇文章主要講解了如何使用javascript中的中介者模式,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

介紹:在前端開發的過程中,組件與組件之間的通訊特別常見,一個組件的change需要引起數個組件的change,這就需要組件與組件之間存在復雜的多對多關系鏈。如何來減輕維護這些關系的復雜度,讓組件和組件之間實現低耦合?這就是我們即將介紹的中介者模式。

定義:用一個中介對象(中介者)來封裝一系列的對象交互,中介者使個對象不需要顯式的相互引用,從而使其耦合松散,而且可以獨立的改變他們之間的交互。中介者模式又稱為調停者模式,它是一種對象行為型模式。

場景:我們來實現一個打招呼的小demo,由牛牛發送一條消息給中介者,中介者收到后通知risker發消息給牛牛

示例:

var Mediator = {
  Niuniu: null,
  Risker: null,
  showMessage: function(component, message){
    console.log(component.getName() + '說:' + message);
    if(component.getName() === 'Niuniu'){
      this.Risker.showMessage('hello Niuniu'); 
    }
  }
}
 
var Niuniu = function(){
  this.name = 'Niuniu';
  this.getName = function(){
    return this.name;
  }
  this.showMessage = function(message){
    Mediator.showMessage(this, message);
  }
}
 
var Risker = function(){
  this.name = 'Risker';
  this.getName = function(){
    return this.name;
  }
  this.showMessage = function(message){
    Mediator.showMessage(this, message);
  }
}
 
var niuniu = new Niuniu();
var risker = new Risker();
Mediator.niuniu = niuniu;
Mediator.Risker = risker;
 
niuniu.showMessage('hello Risker');
 
// Niuniu說:hello Risker
// Risker說:hello Niuniu

這個例子里面Niuniu和Risker稱為同事對象,同事對象之間存在關聯關系,既會被別的對象影響,也會影響別的對象。

Mediator稱為中介者,其實中介者模式做的只是把之前網狀的關系結構轉化成了以Mediator為中心的星型結構。關聯關系并沒有少,只是在Mediator中集中處理了。

中介者模式總結:

優點:
* 中介者模式簡化了同事對象之間的交互,它用中介者和同事的一對多交互代替了原來同事之間的多對多交互。
* 將各同事對象解耦,中介者有利于各同事對象之間的松耦合

缺點:
* 在中介者中包含了大量同事之間的交互細節,會導致中介者非常復雜難以維護。

適用場景:
* 系統中對象之間存在復雜的引用關系,系統結構混亂難以理解
* 一個對象由于引用了其他很多對象并且直接和這些對象通信,導致難以復用該對象

看完上述內容,是不是對如何使用javascript中的中介者模式有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女