标簽 : Java與設計模式
組合模式: 将對象組合成樹形結構以表示‘部分-整體’的層次結構, 使得使用者對單個對象群組合對象的使用具有一緻性.
解析
組合模式描述了如何将容器和葉子節點進行遞歸組合, 使使用者在使用時可一緻的對待容器和葉子, 為處理樹形結構提供了完美的解決方案.
當容器對象的指定方法被調用時, 将周遊整個樹形結構, 并執行調用. 整個過程遞歸處理.
使對檔案(Image/Text/Video/…)殺毒與對檔案夾(Folder)的殺毒暴露統一接口.
為組合模式中的對象聲明接口, 在适當情況下, 實作所有類共有接口的預設行為.
聲明一個接口用于通路和管理Component子元件.
葉子對象: 定義沒有有分支節點的行為:
容器對象: 定義有分支節點的行為, 用來存儲子部件, 實作與子部件有關的操作:
Client
組合模式定義了基本對象群組合對象的類層次結構, 基本對象可以被組合成更複雜的組合對象, 而這個組合對象又可以被組合, 這樣不斷地遞歸下去, 這樣在客戶代碼中任何用到基本對象的地方都可以使用組合對象.
使用者不用關心到底是處理一個葉節點還是處理一個枝節點, 也用不着為定義組合而寫一些選擇判斷語句.
總的來說: 組合模式讓使用者可以一緻地使用組合結構和單個對象.
場景
當需求中是展現部分與整體層次的結構時, 以及希望使用者可以忽略組合對象與單個對象的不同, 統一地使用組合中的所有對象時, 就應該考慮使用組合模式了:
作業系統資料總管
GUI容器視圖
XML檔案解析
OA系統中組織機構處理
Junit單元測試架構
TestCase(葉子)、TestUnite(容器)、Test接口(抽象)
<dl></dl>
<dt>參考</dt>