欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

場景:我們來實現(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稱為同事對象,同事對象之間存在關(guān)聯(lián)關(guān)系,既會被別的對象影響,也會影響別的對象。

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

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

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

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

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

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

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

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

相關(guān)文章

  • JS中的async與await異步編程及await使用陷阱

    JS中的async與await異步編程及await使用陷阱

    這篇文章主要介紹了async與await異步編程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 簡單了解JavaScript中常見的反模式

    簡單了解JavaScript中常見的反模式

    這篇文章主要介紹了簡單了解JavaScript中常見的反模式,反模式 是指對反復(fù)出現(xiàn)的設(shè)計問題的常見的無力而低效的設(shè)計模式,俗話說就是重蹈覆轍。 這篇文章描述了 JavaScript 中常見的一些反模式,以及避免它們的辦法。,需要的朋友可以參考下
    2019-06-06
  • 詳解微信小程序官方人臉核身認(rèn)證

    詳解微信小程序官方人臉核身認(rèn)證

    本文主要介紹了微信小程序官方人臉核身認(rèn)證,感興趣的同學(xué),可以參考下,并且試驗一下。
    2021-06-06
  • js中l(wèi)et能否完全替代IIFE

    js中l(wèi)et能否完全替代IIFE

    這篇文章主要介紹了js中l(wèi)et能否完全替代IIFE,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • 小程序使用watch監(jiān)聽數(shù)據(jù)變化的方法詳解

    小程序使用watch監(jiān)聽數(shù)據(jù)變化的方法詳解

    這篇文章主要介紹了小程序使用watch監(jiān)聽數(shù)據(jù)變化的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 一個簡單不報錯的summernote 圖片上傳案例

    一個簡單不報錯的summernote 圖片上傳案例

    下面小編就為大家?guī)硪黄粋€簡單不報錯的summernote圖片上傳案例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • js刷新頁面方法大全

    js刷新頁面方法大全

    本文介紹下,用js刷新當(dāng)前頁面的幾種方法,包括reload方法、replace方法、自動刷新方法等。有需要的朋友參考下吧
    2008-05-05
  • js圖片無縫滾動插件使用詳解

    js圖片無縫滾動插件使用詳解

    這篇文章主要為大家詳細(xì)介紹了js圖片無縫滾動插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • js版掃雷游戲

    js版掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了js版掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • JavaScript webpack5配置及使用基本介紹

    JavaScript webpack5配置及使用基本介紹

    webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。這篇文章主要介紹了JavaScript webpack5配置及使用基本介紹
    2022-09-09

最新評論