細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(5)

          隨筆分類

          文章分類

          文章檔案

          收藏夾




          搜索

          最新評論

          Mediator的意思是中介者、調節者、傳遞物,顧名思義,這個模式在程式中必然負擔一個中介、調節、傳遞的工作。

          物件導向設計中,每個物件所負擔的工作儘可能的簡單明瞭,鼓勵物件將工作分布至其它物件上,讓一群工作屬性相同的物件得以共同合作,即所謂高聚合性,以增加物件的可重用性。

          然而在組織物件工作的同時,物件彼此之間可能知道彼此的存在,並相互依賴,這就使得物件之間的耦合性相對的提高,最差的情況下,所有的物件都知道彼此的存在,這又會使得系統的重用性降低。

          Mediator模式用一個中介的物件來封裝物件彼此之間的交互,物件之間並不用互相知道另一方,這可以降低物件之間的耦合性,如果要改變物件之間的交互行為,也只需要對Mediator加以修改即可。

          Gof 的書 中所舉的例子為對話方塊組件;例如,當一個特定的輸入欄為空時,另一個按鈕不能使用;在ListBox的選項中選擇一個項目,將會改變另一個欄位的內容;反過來的,輸入欄位的內容也會影響ListBox的選擇等等。
          Mediator

          在這個例子中,可以設計對話方塊中的組件知道彼此的存在,由一個直接影響另一個(或多個)組件,但最好的方法,還是設計一個Mediator,由它來協調組件之間的交互,例如設計一個FontDialogDirector類別來作為中介者。
          Mediator

          可以從Sequence Diagram來瞭解Mediator的運作:
          Mediator

          當ListBox發生變化時,它會呼叫Mediator的listBoxChanged()方法,Mediator取得變化的組件之狀態,並重新設定所有與它有交互的組件,同樣的,其它的組件發生變化時,也呼叫Mediator上對應的方法,由Mediator來取得組件變化,並設定其它互動的組件。

          簡單的說,Mediator設計有與組件溝通的介面,介面中封裝了與其它組件互動細節,組件與組件之間不用知道彼此的存在,它們只要與Mediator溝通就好了,利用這種方式,可以切開組件與組件之間的耦合。

          Mediator模式的 UML 結構圖如下所示:
          Mediator
          基本上Mediator模式在使用的彈性很大,由Sequence Diagram理解概念,會比從Class Diagram瞭解結構來得重要,不過在Class Diagram中可以注意的是類別的名稱,Colleague是同事的意思,將一群共事的元件視為一群共同合作的同事,為了使同事之間的活動獨立,並使得團隊合作的交互更具彈性,需要一個Mediator來協調同事之間的業務行為。
          posted on 2007-04-17 10:48 張金鵬 閱讀(372) 評論(0)  編輯  收藏 所屬分類: Behavioral 模式
          主站蜘蛛池模板: 同江市| 吕梁市| 财经| 夏邑县| 卢湾区| 台北县| 元阳县| 浦东新区| 兴海县| 夏津县| 长白| 文水县| 三门峡市| 佛坪县| 泰宁县| 衡东县| 石首市| 盐城市| 清苑县| 明水县| 南召县| 漳州市| 宁蒗| 巩留县| 赫章县| 柳江县| 浑源县| 凌海市| 柯坪县| 丹寨县| 闽侯县| 元江| 宁德市| 长宁县| 井冈山市| 辰溪县| 清涧县| 涿鹿县| 武乡县| 奉贤区| 固镇县|