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

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

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

image

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

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

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

  例說(shuō)Mediator引用

  菜單中的按鈕要根據(jù)其他的操作來(lái)響應(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)來(lái)的消息進(jìn)行處理。

image

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

image

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

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

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

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

主站蜘蛛池模板: 亚洲黄色在线看 | 日韩精品一区二区三区乱码 | 久久中文字幕视频 | 国产成人精品一区二区免费 | 国产3区| 色婷婷影视 | 涩涩视频在线看 | 99精品视频在线观看re | 国产视频二区在线观看 | 美女全黄网站 | 午夜在线免费观看视频 | 亚洲日本欧美产综合在线 | 成人精品国产亚洲 | 国产91在线播放中文 | yy4080午夜一毛片| 亚洲黄色在线观看视频 | 国产一区二区免费 | 蜜桃久久久 | 色哟哟网 | 成年色黄大色黄大片 视频 成年视频xxxxxx在线 | 国产a级精品特黄毛片 | 麻豆出品 | 中文字幕一区二区三区在线播放 | 激情五月婷婷综合 | 99ri国产在线| 四虎必出精品亚洲高清 | 久久99精品一级毛片 | 亚洲图片小说视频 | 国产h视频在线观看网站免费 | 亚洲网站视频在线观看 | 伊人久久精品 | 国产精品自在自线 | 加勒比一本大道在线 | 国内精品一区二区 | 亚洲第一在线视频 | 国产乱子精品免费视观看片 | 在线视频三区 | 成年色黄大色黄大片 视频 成年视频xxxxxx在线 | 999热精品这里在线观看 | 加比勒精品视频在线观看 | 亚洲精品tv |