關於Mediator模式的疑惑–>讀書筆記系列

來源:互聯網
上載者:User

在<<敏捷式軟體開發 (Agile Software Development)>>一書中講解Mediator模式舉的是如下關係的一個例子:

用一個JList和一個JTextField構造了一個QuickEntryMediator類的執行個體.QuickEntryMediator向JTextField註冊了一個匿名的DocumnetListener.(沒有系統學過Java,這點上文法不是很清楚,但大致也知道在做什麼). 每當文本發生變化時,這個listener就調用textFieldChanged方法.接著,該方法在JList中尋找以這個文本為首碼的元素並選中它. (簡單地說就是文字框內容發生變化後,list框要對這個變化響應.)
JList和JTextField的使用者並不知道該Mediator的存在.它安靜地待著,把它地策略施加在那些對象上,而無需它們地允許或知曉.
然而看了Gof的和其它的設計模式的書(主要是<<Java與模式>>)發現Mediator模式的結構圖如下:

感覺它們之間的差別挺大的.下面這張圖明顯要求Colleague對象需要知道Mediator而無需知道其餘Colleagues(而且有一個抽象的Colleague類).當Colleague對象狀態發生變化時它只需通知Mediator對象就行,Mediator對象自然會通知關心這一變化的Colleagues做出相應的變化.那麼對於<<敏捷>>一書中的"JList和JTextField的使用者並不知道該Mediator的存在"該如何理解呢.
按照<<Java與模式>>一書將此模式比喻為團隊管理,小組成員之間必須通過組長才能溝通,那麼每個小組成員也必須知道哪個是組長,也就是Colleague對象必須擁有Mediator對象的引用.
然而<<敏捷>>一書例子的實現卻非如此.兩者之間的溝通是通過Mediator管理通過事件觸發實現的, 難道這個是運用事件對此模式的一個簡化? 
按照Gof 定義的Mediator意圖:用一個中介對象來封裝一系列的對象互動。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。
那麼<<敏捷>>一書給的例子是最簡單不過,而且是非常符合這個意圖的.Mediator負責JList和JTextField的互動,避免了兩者之間的直接互動,從而解耦它們.

那麼我們是否可以這麼認為: 我才不管你怎麼實現呢,我只要保證對象們之間不互相直接通訊,又能做到當自己(對象A)的狀態改變時,能夠觸發到別的感興趣的類做出響應,而對象A自己卻完全不知道已經影響到了別人(這樣就能保證"可以獨立地改變它們之間的互動",我只要通過一個類如上面的QuickEntryMediator去管理溝通就好^_^), 那麼就是Mediator模式,退一步說實現了Mediator的思想呢?

感覺這似乎跟Observer模式很像了,不知道它們之間真正的區別在哪裡??, 個人感覺<<敏捷>>中舉的例子的實現跟Observer模式用delegate簡化實現是很相似的,只不過<<敏捷>>中少了一個抽象的Subject, 註冊事件在QuickEntryMediator裡面註冊而已.思想上是及其接近的.

個人在設計模式這塊還顯得比較稚嫩,可能這些都是自己沒有理解它們的精髓而產生錯誤的理解導致的疑惑罷了,期待大家能夠指點迷津,撥亂反正.
能夠找出別人表達的缺陷,我想也是一種溝通,指正別人錯誤也是對自己在這一方面思想的一次整理^_^
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.