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

主站蜘蛛池模板: 婷婷亚洲国产成人精品性色 | 国产精品好好热在线观看 | 欧美成人免费午夜影视 | 蕾丝视频成人★在线观看 | 欧美大成色www永久网站婷 | 中文字幕在线观看国产 | 97干婷婷 | 在线a网站 | 久久久久久久综合日本亚洲 | 一级做α爰片久久毛片 | 一区二区三区四区在线免费观看 | 欧美亚洲另类色国产综合 | 涩涩涩在线 | 国产精品吹潮香蕉在线观看 | 激情亚洲视频 | 久久精品1| 成人在线免费视频观看 | 精品久久久久久蜜臂a∨ | 亚洲一区二区三区免费 | 福利在线视频观看 | 图片专区亚洲 欧美 另类 | 国产精品久久网 | 国产福利微拍精品一区二区 | 91精品久久久久久久99蜜桃 | 久久888 | 成人久久久久久 | 天天干精品| 日韩中文字幕免费观看 | 色综合图片二区150p | 久久亚洲精品成人 | 国产美女激情视频 | 欧美xx在线| 国产成人精品一区二区仙踪林 | 色综合色狠狠天天久久婷婷基地 | 在线视频 亚洲 | 日韩亚洲一区二区三区 | 香港aa三级久久三级 | 一区二区三区免费 | 黄色高清在线观看 | 四虎国产精品永久在线播放 | 色婷婷精品大全在线视频 |