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

原創生活

國內 商業 滾動

基金 金融 股票

期貨金融

科技 行業 房產

銀行 公司 消費

生活滾動

保險 海外 觀察

財經 生活 期貨

當前位置:滾動 >

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

文章來源:財金網  發布時間: 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立即發帖
主站蜘蛛池模板: 午夜精品一区二区三区在线观看 | 国产精品国产精品国产专区不卡 | 国产精品一区电影| 日韩精品视频久久| 午夜欧美一区二区三区免费观看| 粉嫩av免费一区二区三区| 国产精品久久久久久久久婷婷| 美女在线免费视频| 日韩a∨精品日韩在线观看| 91免费精品视频| 不卡视频一区| 91高清免费视频| 一区二区三区四区视频在线观看| 国产精品国内视频| 国产精品秘入口18禁麻豆免会员| 国产又粗又长又爽视频| 极品日韩久久| 精品国模在线视频| 久久久久亚洲精品| 久久国产精品一区二区三区 | 日韩av免费网站| 久久亚洲精品视频| 精品久久免费观看| 国产精品欧美日韩久久| 国产成a人亚洲精v品在线观看| 不卡视频一区| 日韩在线免费观看视频| 欧美精品一区二区性色a v| 久久精品99| zzijzzij亚洲日本成熟少妇| 亚洲免费久久| 麻豆一区二区三区在线观看| 国产精品自拍合集| 亚洲中文字幕无码一区二区三区| 日韩欧美亚洲区| 黄色国产精品一区二区三区| 不卡中文字幕av| 日韩av第一页| 国产精品自产拍在线观看| www.久久色.com| 欧美精品亚洲精品|