組合(composite)模式:有時又叫作部分-整體模式,它是一種將物件組合成樹狀的層次結構的模式,用來表示「部分-整體」的關係,使使用者對單個物件和組合物件具有一致的訪問性。
組合模式使得客戶端**可以一致地處理單個物件和組合物件,無須關心自己處理的是單個物件,還是組合物件,這簡化了客戶端**;
更容易在組合體內加入新的物件,客戶端不會因為加入了新的物件而更改源**,滿足「開閉原則」;
設計較複雜,客戶端需要花更多時間理清類之間的層次關係;
不容易限制容器中的構件;
不容易用繼承的方法來增加構件的新功能;
(1) 透明方式:在該方式中,由於抽象構件宣告了所有子類中的全部方法,所以客戶端無須區別樹葉物件和樹枝物件,對客戶端來說是透明的。但其缺點是:樹葉構件本來沒有 add()、remove() 及 getchild() 方法,卻要實現它們(空實現或拋異常),這樣會帶來一些安全性問題。
(2) 安全方式:在該方式中,將管理子構件的方法移到樹枝構件中,抽象構件和樹葉構件沒有對子物件的管理方法,這樣就避免了上一種方式的安全性問題,但由於葉子和分支有不同的介面,客戶端在呼叫時要知道樹葉物件和樹枝物件的存在,所以失去了透明性。
設計模式之組合模式
組合模式 以 整體 部分 的層次結構,將物件以樹型結構組合起來。如下圖所示 組合模式首先得定義乙個用來管理和訪問部件們的抽象類。public abstract class equipment 再建立乙個組合體的部件 class element equipment 現在我們再來定義乙個組合體,也就是組...
設計模式之 組合模式
有時候我們需要維護一些物件,這些物件具有一定的層次結構,它們之間雖然差異很大,但在使用的時候我們希望能構一致的對待,比如windows控制項,繪圖中的圖形等,這個時候我們就可以採用組合模式來進行管理。組合模式就是將要管理的物件按樹型結構來進行組織,表示成一種 整體 部分 的層次結構,使得使用者對單個...
設計模式之組合模式
組合模式 將物件組合成樹形結構以表示 部分 整體 的層次結構。使得使用者對單個物件和組合物件的使用具有一致性。適用性 想表示物件的部分 整體層次結構,希望使用者忽略組合物件與單個物件的不同,使用者將統一地使用組合結構中的所有物件。典型表示結構圖 宣告組合中的物件宣告介面 在適當的情況下,實現所有類共...