最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript設(shè)計(jì)模式 – 中介者模式原理與用法實(shí)例分析

 更新時(shí)間:2020年04月20日 08:48:27   作者:李小強(qiáng)  
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 中介者模式,結(jié)合實(shí)例形式分析了javascript中介者模式基本概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了javascript設(shè)計(jì)模式 – 中介者模式原理與用法。分享給大家供大家參考,具體如下:

介紹:在前端開(kāi)發(fā)的過(guò)程中,組件與組件之間的通訊特別常見(jiàn),一個(gè)組件的change需要引起數(shù)個(gè)組件的change,這就需要組件與組件之間存在復(fù)雜的多對(duì)多關(guān)系鏈。如何來(lái)減輕維護(hù)這些關(guān)系的復(fù)雜度,讓組件和組件之間實(shí)現(xiàn)低耦合?這就是我們即將介紹的中介者模式。

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

場(chǎng)景:我們來(lái)實(shí)現(xiàn)一個(gè)打招呼的小demo,由牛牛發(fā)送一條消息給中介者,中介者收到后通知risker發(fā)消息給牛牛

示例:

var Mediator = {
  Niuniu: null,
  Risker: null,
  showMessage: function(component, message){
    console.log(component.getName() + '說(shuō):' + 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說(shuō):hello Risker
// Risker說(shuō):hello Niuniu

這個(gè)例子里面Niuniu和Risker稱為同事對(duì)象,同事對(duì)象之間存在關(guān)聯(lián)關(guān)系,既會(huì)被別的對(duì)象影響,也會(huì)影響別的對(duì)象。

Mediator稱為中介者,其實(shí)中介者模式做的只是把之前網(wǎng)狀的關(guān)系結(jié)構(gòu)轉(zhuǎn)化成了以Mediator為中心的星型結(jié)構(gòu)。關(guān)聯(lián)關(guān)系并沒(méi)有少,只是在Mediator中集中處理了。

中介者模式總結(jié):

優(yōu)點(diǎn):
* 中介者模式簡(jiǎn)化了同事對(duì)象之間的交互,它用中介者和同事的一對(duì)多交互代替了原來(lái)同事之間的多對(duì)多交互。
* 將各同事對(duì)象解耦,中介者有利于各同事對(duì)象之間的松耦合

缺點(diǎn):
* 在中介者中包含了大量同事之間的交互細(xì)節(jié),會(huì)導(dǎo)致中介者非常復(fù)雜難以維護(hù)。

適用場(chǎng)景:
* 系統(tǒng)中對(duì)象之間存在復(fù)雜的引用關(guān)系,系統(tǒng)結(jié)構(gòu)混亂難以理解
* 一個(gè)對(duì)象由于引用了其他很多對(duì)象并且直接和這些對(duì)象通信,導(dǎo)致難以復(fù)用該對(duì)象

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

亚东县| 平原县| 岳池县| 溧水县| 尼玛县| 高尔夫| 淮阳县| 泸水县| 盐山县| 五大连池市| 兴化市| 正阳县| 龙川县| 牟定县| 平利县| 旬阳县| 洞口县| 和龙市| 东乡县| 南通市| 伊春市| 朔州市| 高清| 唐山市| 无极县| 泽普县| 江城| 庆阳市| 安西县| 安福县| 克什克腾旗| 平塘县| 莱芜市| 化德县| 庆阳市| 浦江县| 黄大仙区| 昌都县| 娄烦县| 比如县| 三河市|