Wednesday, April 24, 2013

Design Patterns-Mediator pattern

用一個仲介物件來封裝一系列的物件互動。仲介者使用各物件不需要顯式相互參考,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。

  1. Motivation:

    1. 不同的物件與物件之間的關係,要求物件之間需要知道其他所有物件,儘管將一個系統分割成許多物件通常可以增加其可複用性,但物件間互相連接又會降低其可複用性。
    2. 物件與物件之間大量連接,其表現出唯一整個不可分割的整體,彈性降低、變動困難。
  2. Warning:

    1. 很容易在系統上應用,也很容易產生誤用。當系統出現了多對多互動複雜的物件群時,不要急於使用,重新思考設計上的合不合理。

    2. 一般應用於一組物件以定義良好但是複雜的’物件與物件通訊’。

  3. Adventage:

    1. 仲介者的出現可以減少其他物件與物件的耦合,所以可以獨立改變和複用各個物件,若出現改變則只需改變仲介者。

    2. 物件與物件利用抽象的協作,把仲介作為一個獨立的概念並將其封裝在一個物件之中,物件與物件互動的焦點將轉移至仲介者身上,而不是單純從物件與物件間看待。

  4. Disadventage:

    1. 由於控制都集中至仲介者,因此會發生職責過多的問題。Single Responsibility Principle

    2. 大幅增加、集中複雜度於仲介者身上,仲介者的變動都會比”物件與物件間變動”還困難。

    3. 仲介者的集中管理是缺點也是優點。

No comments:

Post a Comment