定義
允許你將對象組合爲樹形結構來表現“整體/部分”層次結構。組合能讓客戶以一致的方式處理個別對象以及對象組合。
角色
抽象構件角色(component)
是組合中的對象聲明接口,在適當的情況下,實現所有類共有接口的默認行爲。聲明一個接口用於訪問和管理Component子部件。
樹葉構件角色(Leaf)
在組合樹中表示葉節點對象,葉節點沒有子節點。並在組合中定義圖元對象的行爲。
樹枝構件角色(Composite)
定義有子部件的那些部件的行爲。存儲子部件。在Component接口中實現與子部件有關的操作。
類圖
示例
要點
1.組合模式解耦了客戶程序與複雜元素內部結構,從而使客戶程序可以向處理簡單元素一樣來處理複雜元素。
2.如果你想要創建層次結構,並可以在其中以相同的方式對待所有元素,那麼組合模式就是最理想的選擇