結構型模式(4) 組合模式

2021-09-26 22:28:06 字數 720 閱讀 8092

有時又叫作部分-整體模式,它是一種將物件組合成樹狀的層次結構的模式,用來表示「部分-整體」的關係,使使用者對單個物件和組合物件具有一致的訪問性。

優點:

組合模式使得客戶端**可以一致地處理單個物件和組合物件,無須關心自己處理的是單個物件,還是組合物件,這簡化了客戶端**;

更容易在組合體內加入新的物件,客戶端不會因為加入了新的物件而更改源**,滿足「開閉原則」;

缺點:

設計較複雜,客戶端需要花更多時間理清類之間的層次關係;

不容易限制容器中的構件;

不容易用繼承的方法來增加構件的新功能;

這種item中又包含item的關係就構成了組合模式。

在構建樹的過程中,可能會出現迴圈引用,從而在遍歷樹的時候可能就會出現死迴圈。因此,我們需要在新增節點的時候避免迴圈引用的出現。

我們可以在item中再新增乙個list成員變數,用於記錄根節點到當前節點的路徑。該路徑可以用每個節點的id表示。一旦新加入的節點id已經出現在當前路徑中的時候,就說明出現了迴圈引用,此時應該給出提示。

結構型模式之三 組合模式

組合模式 composite pattern 組合多個物件形成樹形結構以表示 整體 部分 的結構層次。組合模式對單個物件和組合物件的使用具有一致性。屬於物件結構模式,它將物件組織到樹結構中,可以用來描述整體部分的關係。抽象構件可以是介面或抽象類,為葉子構件和容器構件物件宣告介面,在該角色中可以包含所...

設計模式系列(結構型模式)之四 組合模式

將物件組合成樹形結構以表示 部分 整體 的層次結構,使客戶端對單個物件和組合物件保持一致的方式處理。適用於 客戶端可以忽略組合物件與單個物件的差異 處理樹形結構資料。優點 層次清晰 客戶端不必關係層次差異,方便控制 符合開閉原則。缺點 樹形處理較為複雜。組合模式分為透明式的組合模式和安全式的組合模式...

結構型 3 組合模式

1.模式機動 資料夾 容器 container 檔案 葉子 leaf 如何將容器物件和葉子物件進行遞迴組合,使得使用者在使用時無須對它們進行區分,可以一致地對待容器物件和葉子物件?組合模式 2.模式定義 3.模式結構 組合模式包含如下角色 模式結構 檔案系統組合模式結構圖 透明組合模式 水果盤 例項...