組合模式(composite pattern):組合多個物件形成樹形結構以表示「整體-部分」的結構層次。組合模式對單個物件和組合物件的使用具有一致性。屬於物件結構模式,它將物件組織到樹結構中,可以用來描述整體部分的關係。
抽象構件可以是介面或抽象類,為葉子構件和容器構件物件宣告介面,在該角色中可以包含所有子類共有行為的宣告和方法。在抽象構件中定義了訪問及管理它的子構件的方法,如增加子構件、刪除子構件、獲取子構件等。
2.leaf
葉子構件在組合結構中表示葉子節點物件,葉子節點也沒有子節點,它實現了在抽象構件中定義的行為。對於那些訪問及管理子構件的方法,可以通過異常等方式處理。
3.composite
容器構件在組合結構中表示容器節點物件,容器節點物件也包含子節點,其子節點可以說葉子節點也可以是容器節點,它提供乙個集合用於儲存子節點,實現了在抽象構件中定義的行為,包括那些訪問及管理子構件的方法,在其業務方法中可以遞迴呼叫其子節點的業務方法。
在水果盤中有一些水果,如蘋果、香蕉、梨子,大水果盤中還可以放小水果盤,現需要對盤中的水果進行遍歷(吃),當然如果對乙個水果盤執行「吃」的方法,實際上就是吃其中的水果。使用組合模式模擬該場景
類圖如下:
結構型模式(4) 組合模式
有時又叫作部分 整體模式,它是一種將物件組合成樹狀的層次結構的模式,用來表示 部分 整體 的關係,使使用者對單個物件和組合物件具有一致的訪問性。優點 組合模式使得客戶端 可以一致地處理單個物件和組合物件,無須關心自己處理的是單個物件,還是組合物件,這簡化了客戶端 更容易在組合體內加入新的物件,客戶端...
設計模式系列(結構型模式)之四 組合模式
將物件組合成樹形結構以表示 部分 整體 的層次結構,使客戶端對單個物件和組合物件保持一致的方式處理。適用於 客戶端可以忽略組合物件與單個物件的差異 處理樹形結構資料。優點 層次清晰 客戶端不必關係層次差異,方便控制 符合開閉原則。缺點 樹形處理較為複雜。組合模式分為透明式的組合模式和安全式的組合模式...
結構型 3 組合模式
1.模式機動 資料夾 容器 container 檔案 葉子 leaf 如何將容器物件和葉子物件進行遞迴組合,使得使用者在使用時無須對它們進行區分,可以一致地對待容器物件和葉子物件?組合模式 2.模式定義 3.模式結構 組合模式包含如下角色 模式結構 檔案系統組合模式結構圖 透明組合模式 水果盤 例項...