適用性
組合模式的適用場景很明確:只要是樹形資料結構都可以考慮適用組合模式。
結構
參與者
• component (graphic)
— 為樹形資料結構上的節點宣告標準介面。和所有的基類一樣,也可以根據實際情況為某些結構提供預設實現。
— 宣告用於訪問和管理下級節點的介面。
• leaf (rectangle、line、te x t等)
— 葉子節點。
• composite (picture)
— 提供訪問和管理下級節點的功能,經常會包括下級節點的生命週期。
— 提供管理下級節點的資料結構。
— 將必要的操作**給下級節點,這是實現遞迴呼叫的關鍵。
— 下級節點也可能是compsite物件。
• client
— 資料結構的利用者。
協作
使用者使用component類介面訪問樹形資料結構中的某個節點。如果物件是乙個葉節點 ,則直接處理請求。如果物件是composite節點, 它通常將請求傳送給它下級節點。如果有必要,composite也會執行一些輔助操作。輔助操作的內容由軟體的需求而定,和組合模式無關。
Aha!設計模式 54 組合模式 1
意圖 使用組合的方式管理下級要素,在實現乙個樹形資料結構的同時為各級節點提供相同的介面,使用者可以以相同的觀點看待樹上的每個節點。動機 現實世界中存在很多的樹形結構,先看兩個例子。首先是公司組織結構圖 接下來是電腦構成圖 通過觀察可以發現,這兩個例子中的樹形結構具有以下的特徵 樹上存在包含其他節點的...
設計模式8 組合模式
組合模式首先想到的就是樹形結構,比如我們常用的檔案結構,請看windows的檔案結構 無論是檔案或者是資料夾,常用操作都是一致的,比如 複製 貼上 剪下 刪除 所佔空間大小。我們並沒有刻意的去分他是資料夾還是檔案。我們可以把資料夾看成是組合物件,把每乙個檔案看成是單個物件。組合模式模糊了這兩個概念,...
《設計模式12 組合模式
組合模式其實是乙個很形象的模式。它也被稱為部分整體模式。組合模式的結構就如同樹狀圖一樣。而樹就是枝幹 葉子的組合,組合模式可以形象的這麼理解。其實資料夾是乙個很好的組合模式的體現。乙個資料夾 樹根root 下可能有多個資料夾 枝幹trunk 可能是單個的檔案 樹葉leaf 而枝幹是可以繼續向下延伸的...