全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1810
推到 Plurk!
推到 Facebook!

淺談協調者模式 - 使用 Delphi + Interface  

 
GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-09-10 16:54:00 IP:59.120.xxx.xxx 訂閱
淺談協調者模式 - 使用 Delphi Interface

在「深入淺出-設計模式」一書中談到「居間協調者模式」時,把它歸類在不受設計人歡迎的模式中(請參閱:14 附錄:剩下的模式-居間協調者模式)。

只是,它有提到在 MVC 中經常會使用這個模式來設計。看了下它的介紹,就真的是簡短到一個極致。

接著便拿起「參悟物件設計模式 - 使用 Delphi」一書,翻到了「協調者模式」一節。

……還是有點難理解,按本人羸弱的思考能力是這樣解讀的:

  • Mediator 收集所有的元件,並且設計一套劇本。
  • Colleague 做了什麼事都要回報給 Mediator。
於是便有了以下的圖:


使用 Interface 設計上是比 Abstract Class 要來得簡潔,要注意的地方大概是:
protected 區域影響子類的使用
為了一致性會讓父類別重載時的 Private 屬性無法浮現,所以要另外繼承父類別來使用


整個依樣畫完葫蘆後,覺得協調者模式的好處是:
  • 分工十分明確,物件間彼此都不知道對方的存在,物件重複利用的可能性大增。

壞處是:
  • Mediator 的程式內容會非常的多,所有流程和物件通通擠在一個 function 裡,隨著專案日漸龐大,function 也會越來越難以維護,還有一堆可能交叉的流程等著離釐清……
但若是依照「修改封閉」原則來看,也會有日後繼承樹越來越大支的問題,難怪也是冷門的設計模式之一。(笑)

由於 UI 完全按照書上的範例設計,就不再放執行畫面了
Sample Code Download.
系統時間:2017-11-22 20:40:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!