一区二区久久-一区二区三区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)系我們修改或刪除,多謝。

主站蜘蛛池模板: 婷婷在线视频观看 | 国产精品自产拍视频观看 | 午夜激情网站 | 亚洲精品国自产拍影院 | 欧美综合图片 | 久久综合九色综合97婷婷群聊 | 无码精品日韩中文字幕 | 亚洲成综合人影院在院播放 | 国产免费人成在线看视频 | 国产高清美女一级a毛片 | 日韩精品免费一区二区三区 | 丁香四月婷婷 | 国产免费观看视频 | 成年美女黄网站色大免费视频 | 国产成人综合亚洲亚洲欧美 | 一本色道久久88加勒比—综合 | 毛片区 | 777久久婷婷成人综合色 | 一区二区在线精品免费视频 | 国产精品中文字幕在线观看 | 国产男女视频在线观看 | 在线观看国产精美视频 | 精品免费一区二区三区 | 国产精品欧美亚洲韩国日本久久 | 女子毛片| 国产日韩一区二区三区 | 99精品国产自产在线观看 | 久久99国产亚洲高清观看首页 | 白嫩美女一级毛片免费看 | 国产小视频在线播放 | 欧美精品www | 久久国产高清波多野结衣 | 92看片淫黄大片看国产片 | 亚洲国产天堂久久九九九 | 婷婷色在线播放 | 992tv又爽又黄的免费视频 | 中文字幕一区二区三区免费看 | 99热国产免费 | 丁香六月纪婷婷激情综合 | 狠狠色丁香久久综合五月 | 九九99九九精彩 |