組合模式
組合模式(composite pattern)有時候又叫做部分-整體模式,允許你将對象組合成樹形結構來表現“整體/部分”層次結構。組合能讓客戶以一緻的方式處理個别對象以及對象組合。
根據《設計模式》定義:将對象組合成樹形結構以表示“部分整體”的層次結構。組合模式使得使用者對單個對象和使用具有一緻性。
組合模式主要涉及到幾個對象:
1.component 是組合中的對象聲明接口,在适當的情況下,實作所有類共有接口的預設行為。聲明一個接口用于通路和管理component
子部件。
2.leaf 在組合中表示葉子結點對象,葉子結點沒有子結點。
3.composite 定義有枝節點行為,用來存儲子部件,在component接口中實作與子部件有關操作,如增加(add)和删除
(remove)等。
uml圖
樹形結構:
組合模式比較複雜,一般有以下用途:
1.你想表示對象的部分-整體層次結構
2.你希望使用者忽略組合對象與單個對象的不同,使用者将統一地使用組合結構中的所有對象。
組合模式提供一個結構,可同時包含個别對象群組合對象。
組合模式允許客戶對個别對象以及組合對象一視同仁。
組合結構内的任意對象成為元件,元件可以是組合,也可以是葉節點。
實作組合模式時,有許多設計上的折中。你要根據需要平衡透明性和安全性。
例子: