有時又叫作部分-整體模式,它是一種將物件組合成樹狀的層次結構的模式,用來表示「部分-整體」的關係,使使用者對單個物件和組合物件具有一致的訪問性。
優點:
組合模式使得客戶端**可以一致地處理單個物件和組合物件,無須關心自己處理的是單個物件,還是組合物件,這簡化了客戶端**;
更容易在組合體內加入新的物件,客戶端不會因為加入了新的物件而更改源**,滿足「開閉原則」;
缺點:
設計較複雜,客戶端需要花更多時間理清類之間的層次關係;
不容易限制容器中的構件;
不容易用繼承的方法來增加構件的新功能;
這種item
中又包含item
的關係就構成了組合模式。
在構建樹的過程中,可能會出現迴圈引用,從而在遍歷樹的時候可能就會出現死迴圈。因此,我們需要在新增節點的時候避免迴圈引用的出現。
我們可以在item中再新增乙個list成員變數,用於記錄根節點到當前節點的路徑。該路徑可以用每個節點的id表示。一旦新加入的節點id已經出現在當前路徑中的時候,就說明出現了迴圈引用,此時應該給出提示。
結構型模式之三 組合模式
組合模式 composite pattern 組合多個物件形成樹形結構以表示 整體 部分 的結構層次。組合模式對單個物件和組合物件的使用具有一致性。屬於物件結構模式,它將物件組織到樹結構中,可以用來描述整體部分的關係。抽象構件可以是介面或抽象類,為葉子構件和容器構件物件宣告介面,在該角色中可以包含所...
設計模式系列(結構型模式)之四 組合模式
將物件組合成樹形結構以表示 部分 整體 的層次結構,使客戶端對單個物件和組合物件保持一致的方式處理。適用於 客戶端可以忽略組合物件與單個物件的差異 處理樹形結構資料。優點 層次清晰 客戶端不必關係層次差異,方便控制 符合開閉原則。缺點 樹形處理較為複雜。組合模式分為透明式的組合模式和安全式的組合模式...
結構型 3 組合模式
1.模式機動 資料夾 容器 container 檔案 葉子 leaf 如何將容器物件和葉子物件進行遞迴組合,使得使用者在使用時無須對它們進行區分,可以一致地對待容器物件和葉子物件?組合模式 2.模式定義 3.模式結構 組合模式包含如下角色 模式結構 檔案系統組合模式結構圖 透明組合模式 水果盤 例項...