一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

C#面向?qū)ο笤O(shè)計(jì)模式縱橫談:Mediator 中介者模式

  依賴關(guān)系的轉(zhuǎn)化

image

  動(dòng)機(jī)(Motivation)

  在軟件構(gòu)建過程中,經(jīng)常會(huì)出現(xiàn)多個(gè)對(duì)象互相關(guān)聯(lián)交互的情況,對(duì)象之間常常會(huì)維持一種復(fù)雜的引用關(guān)系,如果遇到一些需求的更改,這種直接的引用關(guān)系將面臨不斷地變化。

  在這種情況下,我們可使用一個(gè)“中介對(duì)象”來管理對(duì)象間的關(guān)聯(lián)關(guān)系,避免相互交互的對(duì)象之間的緊耦合引用關(guān)系,從而更好地抵御變化。

  例說Mediator引用

  菜單中的按鈕要根據(jù)其他的操作來響應(yīng)它的狀態(tài),例如:Undo按鈕需要至少進(jìn)行一次操作才可用;Redo按鈕是需要先按下Undo按鈕之后才可用等等。下面的例子討論剪切操作

image

image image

  每一個(gè)對(duì)象都和其它三個(gè)對(duì)象進(jìn)行關(guān)聯(lián)。這樣的關(guān)聯(lián)非常復(fù)雜,而且非常脆弱。這樣我們就需要往中介者模式演化,每一個(gè)類都引用中介者,由中介者去通知其它對(duì)象。

image

image

image

  這個(gè)時(shí)候依賴關(guān)系就轉(zhuǎn)化了,我們新添加一個(gè)類的時(shí)候,互相是不知道的。Element及其子類依賴于抽象的Mediator接口,Mediator也依賴于Element,它們是互相依賴的。但是每一個(gè)Element互相是不依賴的。Mediator有改變的時(shí)候,需要去找到list一個(gè)一個(gè)去通知其它Element。
  結(jié)構(gòu)(Structure)

image

  Colleague對(duì)應(yīng)Element,ConcreteMediator和ConcreteColleague其實(shí)并沒有直接依賴,而是間接地依賴。

  Mediator模式的幾個(gè)要點(diǎn)

  將多個(gè)對(duì)象間復(fù)雜的關(guān)聯(lián)關(guān)系解耦,Mediator模式將多個(gè)對(duì)象間的控制邏輯進(jìn)行集中管理,變“多個(gè)對(duì)象互相關(guān)聯(lián)”為“多個(gè)對(duì)象和一個(gè)中介者關(guān)聯(lián)”,簡(jiǎn)化了系統(tǒng)的維護(hù),抵御了可能的變化。隨著控制邏輯的復(fù)雜化,Mediator具體對(duì)象的實(shí)現(xiàn)可能相當(dāng)復(fù)雜。這時(shí)候可以對(duì)Mediator對(duì)象進(jìn)行分解處理。

  Facade模式是解耦系統(tǒng)外到系統(tǒng)內(nèi)(單向)的對(duì)相關(guān)聯(lián)關(guān)系

  Mediator模式是解耦系統(tǒng)內(nèi)各個(gè)對(duì)象之間(雙向)的關(guān)聯(lián)關(guān)系

  .NET架構(gòu)中的Mediator

  在WindowsForm中,每一個(gè)控件與控件之間都有消息的傳遞。在WindowsForm中的ApplicationContext類扮演了一個(gè)中介者的角色,它走了整個(gè)的消息循環(huán),把所有進(jìn)來的消息進(jìn)行處理。

image

  在每個(gè)控件里面都有個(gè)WndProc方法的重載,它其實(shí)就是處理每個(gè)消息的方法

image

  WindowsForm里面的控件都繼承自Control類,Control類就是上面例子中的Element類,而WndProc方法就是上面例子中的OnChange方法。
image

  這個(gè)方法負(fù)責(zé)處理所有的消息,它里面也體現(xiàn)了復(fù)雜度,它里面做了很多的Switch來判斷是什么樣的消息。當(dāng)點(diǎn)擊一個(gè)Button,其它控件就通過ApplicationContext來進(jìn)行反應(yīng)。

it知識(shí)庫C#面向?qū)ο笤O(shè)計(jì)模式縱橫談:Mediator 中介者模式,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 视色视频在线 | 欧美日韩一区二区在线观看视频 | 91精品成人免费国产片 | 国产成人精品一区二区仙踪林 | 久久爆操| 99久久国产综合精品麻豆 | 亚洲国产精品成人午夜在线观看 | 欧美人成在线视频 | 国产美女一级片 | 国产成人在线小视频 | 亚洲一级毛片 | 国产免费一区二区三区在线观看 | 五月开心激情 | 久久riav二区三区 | jizz亚洲女人高清 | 国产视频一二区 | 色视频免费网站 | 成人午夜精品视频在线观看 | 色在线综合 | 天天做天天做天天综合网 | 国产成人盗拍精品免费视频 | 欧美一级久久久久久久久大 | 亚洲网站在线播放 | 一区二区三区四 | 亚洲国产精品一区二区三区在线观看 | 久久综合久久久 | 中文字幕在线视频在线看 | 久久riav | 黄色在线观看www | 免费毛片在线视频 | 91最新视频在线观看 | 国产精品成人久久久 | 曰韩美女一级视频 | 色天使色婷婷在线影院亚洲 | 九色精品视频在线观看 | 午夜黄色大片 | 国产网红 | 在线综合亚洲欧美网站天堂 | 五月天开心激情 | 波多野衣结在线精品二区 | bt7086福利一区二区三区最新 |