javascript設計模式 – 中介者模式原理與用法實例分析
本文實例講述了javascript設計模式 – 中介者模式原理與用法。分享給大家供大家參考,具體如下:
介紹:在前端開發(fā)的過程中,組件與組件之間的通訊特別常見,一個組件的change需要引起數(shù)個組件的change,這就需要組件與組件之間存在復雜的多對多關系鏈。如何來減輕維護這些關系的復雜度,讓組件和組件之間實現(xiàn)低耦合?這就是我們即將介紹的中介者模式。
定義:用一個中介對象(中介者)來封裝一系列的對象交互,中介者使個對象不需要顯式的相互引用,從而使其耦合松散,而且可以獨立的改變他們之間的交互。中介者模式又稱為調停者模式,它是一種對象行為型模式。
場景:我們來實現(xiàn)一個打招呼的小demo,由牛牛發(fā)送一條消息給中介者,中介者收到后通知risker發(fā)消息給牛牛
示例:
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稱為同事對象,同事對象之間存在關聯(lián)關系,既會被別的對象影響,也會影響別的對象。
Mediator稱為中介者,其實中介者模式做的只是把之前網(wǎng)狀的關系結構轉化成了以Mediator為中心的星型結構。關聯(lián)關系并沒有少,只是在Mediator中集中處理了。
中介者模式總結:
優(yōu)點:
* 中介者模式簡化了同事對象之間的交互,它用中介者和同事的一對多交互代替了原來同事之間的多對多交互。
* 將各同事對象解耦,中介者有利于各同事對象之間的松耦合
缺點:
* 在中介者中包含了大量同事之間的交互細節(jié),會導致中介者非常復雜難以維護。
適用場景:
* 系統(tǒng)中對象之間存在復雜的引用關系,系統(tǒng)結構混亂難以理解
* 一個對象由于引用了其他很多對象并且直接和這些對象通信,導致難以復用該對象
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
小程序使用watch監(jiān)聽數(shù)據(jù)變化的方法詳解
這篇文章主要介紹了小程序使用watch監(jiān)聽數(shù)據(jù)變化的方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09

