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

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

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

image

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

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

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

  例說Mediator引用

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

image

image image

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

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對應(yīng)Element,ConcreteMediator和ConcreteColleague其實(shí)并沒有直接依賴,而是間接地依賴。

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

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

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

  Mediator模式是解耦系統(tǒng)內(nèi)各個(gè)對象之間(雙向)的關(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)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 中文字幕在线永久在线视频2020 | 国产精品一区二区综合 | 久久伊人精品综合观看99 | 免费一级乱子伦片 | 色哟哟视频在线观看网站 | 日本一区二区三区免费高清在线 | 欧美一级网址 | 最近手机中文字幕无吗 | 欧美人体大胆做受 | 久久98精品久久久久久婷婷 | 国产精品一区二区在线观看 | 日韩三级久久 | 欧美日韩乱国产 | 丁香欧美 | 91福利视频免费观看 | 日产一一到六区麻豆 | 色哟哟精品 | 午夜视频在线观看国产 | 国产成人精品视频免费 | 亚洲国产欧美国产第一区二区三区 | 久久一区二区三区免费 | 久久午夜夜伦伦鲁鲁片 | 91玖玖 | 国产精品社区在线观看 | 国产精品免费看久久久麻豆 | 亚洲天堂成人在线观看 | 日韩图色 | 国产偷2018在线观看午夜 | 色视频www在线播放国产人成 | 亚洲性久久 | 国产精选91热在线观看 | 欧美三级欧美成人高清www | 99er这里只有精品 | 四虎精品国产一区二区三区 | 免费看黄色录像片 | 亚洲国产系列一区二区三区 | 成人午夜视频在线播放 | 四虎伊人 | a色在线 | 四虎永久在线观看视频精品 | 亚洲特一级毛片 |