天天看點

組合模式 組合模式

标簽 : Java與設計模式

組合模式: 将對象組合成樹形結構以表示‘部分-整體’的層次結構, 使得使用者對單個對象群組合對象的使用具有一緻性.

解析

組合模式描述了如何将容器和葉子節點進行遞歸組合, 使使用者在使用時可一緻的對待容器和葉子, 為處理樹形結構提供了完美的解決方案.

當容器對象的指定方法被調用時, 将周遊整個樹形結構, 并執行調用. 整個過程遞歸處理.

使對檔案(Image/Text/Video/…)殺毒與對檔案夾(Folder)的殺毒暴露統一接口.

為組合模式中的對象聲明接口, 在适當情況下, 實作所有類共有接口的預設行為.

聲明一個接口用于通路和管理Component子元件.

葉子對象: 定義沒有有分支節點的行為:

容器對象: 定義有分支節點的行為, 用來存儲子部件, 實作與子部件有關的操作:

Client

組合模式定義了基本對象群組合對象的類層次結構, 基本對象可以被組合成更複雜的組合對象, 而這個組合對象又可以被組合, 這樣不斷地遞歸下去, 這樣在客戶代碼中任何用到基本對象的地方都可以使用組合對象.

使用者不用關心到底是處理一個葉節點還是處理一個枝節點, 也用不着為定義組合而寫一些選擇判斷語句.

總的來說: 組合模式讓使用者可以一緻地使用組合結構和單個對象.

場景

當需求中是展現部分與整體層次的結構時, 以及希望使用者可以忽略組合對象與單個對象的不同, 統一地使用組合中的所有對象時, 就應該考慮使用組合模式了:

作業系統資料總管

GUI容器視圖

XML檔案解析

OA系統中組織機構處理

Junit單元測試架構

TestCase(葉子)、TestUnite(容器)、Test接口(抽象)

<dl></dl>

<dt>參考</dt>