精品视频在线免费观看_国产精品资源网_欧美日韩亚洲综合在线_自拍视频国产精品

原創生活

國內 商業 滾動

基金 金融 股票

期貨金融

科技 行業 房產

銀行 公司 消費

生活滾動

保險 海外 觀察

財經 生活 期貨

當前位置:滾動 >

設計模式之裝飾者模式 如何理解中介者模式?

文章來源:財金網  發布時間: 2019-04-11 09:13:19  責任編輯:cfenews.com
+|-

20190410期

設計模式-如何理解中介者模式?

定義: 中介者模式(Mediator),用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互

把它理解成人人喊打的黑房產中介也沒啥問題...把租戶與房東解藕了..

現實中的中介者

中介者也被稱為調停者,我們想象一下機場的指揮塔,如果沒有指揮塔的存在,每一架飛機要和方圓百公里的所有飛機通信,才能確認航線以及飛行情況,現實中的情況是,每架飛機只需要跟指揮塔通信,指揮塔作為調停者,知道每一架飛機的飛行情況,所以它可以安排所有飛機的起降時間,及時做出航線調整

代碼中的中介者

假設我們正在編寫一個實時的表單驗證的程序,有如下需求

當用戶名未輸入時輸入密碼將提示先輸入用戶名

當密碼未輸入時輸入確認密碼將提示先輸入密碼

當性別未選擇時輸入年齡將提示先選擇性別

當點擊提交按鈕的時候如果有其它項未項寫就提示當前項不能為空

我們的實現偽代碼如下

passwordInput.onchange = function(){    if(!nameInput.value){      return alert('請先輸入用戶名')    }  }  repeatPasswordInput.onchange = function(){    if(!nameInput.value){      return alert('請先輸入密碼')    }  }  ageInputInput.onchange = function(){    if(!sexInput.value){      return alert('請先選擇性別')    }  }  submit.onclick = function(){    if(!nameInput.value){      return alert('請先輸入用戶名')    }    if(!nameInput.value){      return alert('請先輸入密碼')    }    if(!sexInput.value){      return alert('請先選擇性別')    }    ajax(...)  }

雖然目前順利完成了編碼,但隨之來的需求改變可能給我們帶來麻煩,現在這個驗證的節點還不算多,如果增加到10個或者更多,它們的關系可能變的錯綜復雜,現在我們來引入中介者對象,所有的節點驗證都只跟中介者通信,這樣一來,無論是修改還是新增驗證節點,我們都只需要改變中介者對象里的代碼

偽代碼如下

var mediator = (function () {  return {    changed: function (obj) {      if (obj === passwordInput && !nameInput.value) {        return alert('請先輸入用戶名')      }      if (obj === repeatPasswordInput && !passwordInput.value) {        return alert('請先輸入密碼')      }      if (obj === ageInputInput && !sexInput.value) {        return alert('請先選擇性別')      }    }  }})()// 我們只需要通知中介者passwordInput.onchange = function () {  mediator.changed(this)}repeatPasswordInput.onchange = function () {  mediator.changed(this)}ageInputInput.onchange = function () {  mediator.changed(this)}// 后面如果再增加其它節點驗證我們只要需改動mediator對象就好var mediator = (function () {  / .... /  return {    changed: function (obj) {      // 增加城市驗證      if (obj === homeInputInput && !cityInput.value) {        return alert('請先選擇城市')      }    }  }})()

總結

中介者模式用大白話翻譯指的就是一個對象應該盡可能的了解另一個對象(類似不和陌生人說話),如果對象之間的耦合性太高,一個對象發生改變之后,難免會影響到其它的對象,跟城門失火,殃及池魚的道理是一樣的,而在中介者模式里,對象之間幾乎是不知道彼此存在的,它們只能通過中介者對象來相互影響

專題首頁|財金網首頁

原創
新聞

精彩
互動

獨家
觀察

京ICP備2021034106號-38   營業執照公示信息  財金網  版權所有  cfenews.com  投稿郵箱:362293157@qq.com  業務QQ:362293157立即發帖
主站蜘蛛池模板: 亚洲制服欧美久久| 日韩人妻精品无码一区二区三区 | 久久亚洲欧美日韩精品专区| 日韩久久不卡| 国产无套内射久久久国产| 午夜精品久久久久久久久久久久久 | 亚洲午夜久久久影院伊人| 国产精品爽爽ⅴa在线观看| 欧美大片va欧美在线播放| 日韩精品极品视频在线观看免费| 在线观看亚洲视频啊啊啊啊| 国产精品av电影| 久久国产精品免费观看| 欧美精品久久久久久久自慰| 日韩一级在线免费观看| 天天综合中文字幕| 国产精品91久久久| 国产精品极品尤物在线观看| 久久久久国产一区二区三区| 欧美中文在线观看国产| 日本婷婷久久久久久久久一区二区 | 欧美激情亚洲精品| 亚洲在线不卡| 亚洲一区尤物| 国产精品精品一区二区三区午夜版| 久久精品亚洲国产| 久久中文精品视频| 激情综合网婷婷| 精品视频导航| 国产欧美日韩中文| 国产精品人人做人人爽| 国产精品免费网站| 国产精品国产自产拍高清av水多| 国产精品日韩在线观看| 国产精品久久精品国产| 91精品在线影院| 日韩视频欧美视频| 欧美日本在线视频中文字字幕| 久久综合九九| 内射国产内射夫妻免费频道| 久久精品日韩精品|