国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

javascript設計模式 ? 中介者模式原理與用法實例分析

瀏覽:3日期:2023-11-02 18:31:37

本文實例講述了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中集中處理了。

中介者模式總結:

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

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

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

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

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 金沙县| 贵德县| 平利县| 东城区| 甘谷县| 蓝山县| 梅河口市| 桃园县| 务川| 边坝县| 仙桃市| 日喀则市| 汝南县| 太仓市| 古浪县| 澳门| 东兴市| 天长市| 望都县| 安国市| 将乐县| 青河县| 贡觉县| 镇宁| 鄱阳县| 襄城县| 阳朔县| 忻州市| 彰化市| 淄博市| 邵武市| 含山县| 镇宁| 聂荣县| 修文县| 高青县| 金华市| 黄浦区| 昭觉县| 安阳县| 西安市|