天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

C#面向對象設計模式縱橫談:Mediator 中介者模式

  依賴關系的轉化

image

  動機(Motivation)

  在軟件構建過程中,經常會出現多個對象互相關聯交互的情況,對象之間常常會維持一種復雜的引用關系,如果遇到一些需求的更改,這種直接的引用關系將面臨不斷地變化。

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

  例說Mediator引用

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

image

image image

  每一個對象都和其它三個對象進行關聯。這樣的關聯非常復雜,而且非常脆弱。這樣我們就需要往中介者模式演化,每一個類都引用中介者,由中介者去通知其它對象。

image

image

image

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

image

  Colleague對應Element,ConcreteMediator和ConcreteColleague其實并沒有直接依賴,而是間接地依賴。

  Mediator模式的幾個要點

  將多個對象間復雜的關聯關系解耦,Mediator模式將多個對象間的控制邏輯進行集中管理,變“多個對象互相關聯”為“多個對象和一個中介者關聯”,簡化了系統的維護,抵御了可能的變化。隨著控制邏輯的復雜化,Mediator具體對象的實現可能相當復雜。這時候可以對Mediator對象進行分解處理。

  Facade模式是解耦系統外到系統內(單向)的對相關聯關系

  Mediator模式是解耦系統內各個對象之間(雙向)的關聯關系

  .NET架構中的Mediator

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

image

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

image

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

  這個方法負責處理所有的消息,它里面也體現了復雜度,它里面做了很多的Switch來判斷是什么樣的消息。當點擊一個Button,其它控件就通過ApplicationContext來進行反應。

it知識庫C#面向對象設計模式縱橫談:Mediator 中介者模式,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人精品免费青青草原app | 国产最新地址 | 国产成人久视频免费 | 超碰人热人人热人人看 | 快插我我好湿啊公交车上做 | 美女快播第一网 | 人妻中文字幕乱人伦在线 | 国产AV电影区二区三区曰曰骚网 | 综合激情区视频一区视频二区 | 欧美精品中文字幕亚洲专区 | 欧美人妖12p | 欧美AAAAAA级午夜福利视频 | 人妻夜夜爽天天爽三区麻豆AV网站 | 中文字幕在线视频免费观看 | 三八成人网 | 国产日韩欧美综合久久 | 精品人妻伦一二三区久久AAA片 | 酒色.com| 性刺激欧美三级在线现看中文 | 日韩黄色免费 | 国产精品视频免费观看 | 午夜看片福利在线观看 | 专干老肥熟女视频网站300部 | 91精品一区二区三区在线观看 | 国产午夜三区视频在线 | 高H纯肉NP 弄潮NP男男 | 午夜福利理论片在线播放 | 手机在线观看毛片 | 欧美人妇无码精品久久 | 人妻中文字幕无码久久AV爆 | 亚洲精品不卡视频 | 牛牛超碰 国产 | 亚洲第一页视频 | 亚洲精品乱码一区二区三区 | 好男人午夜www视频在线观看 | 中文字幕永久在线 | 伊人免费在线 | 呜呜别塞了啊抽插 | 天天噜日日噜夜夜噜 | WWW婷婷AV久久久影片 | 亚洲国产货青视觉盛宴 |