1.場景
把部分和整體的關係用樹形結構來表示,從而使客戶端可以使用統一的方式處理部分物件和整體物件。
2.組合模式核心
1)抽象構件(component)角色:定義了葉子和容器構件的共同點
2)葉子(leaf)構件角色:無子節點
3)容器(composite)構件角色:有容器特徵,可以包含子節點
3.**實現
//簡單展示
/** * 抽象元件
* @author administrator
* */
public inte***ce component
//葉子元件
inte***ce leaf extends component
//容器元件
inte***ce composite extends component
//示例
//抽象構建
public inte***ce abstractfile
class imagefile implements abstractfile
@override
public void killvirus() }
class textfile implements abstractfile
@override
public void killvirus()
}class videofile implements abstractfile
@override
public void killvirus()
}class folder implements abstractfile
public void add(abstractfile file)
public void remove(abstractfile file)
public abstractfile getchild(int index)
@override
public void killvirus()
} }//測試
4.應用場景1)作業系統的資源管理器
2)gui中的容器層次圖
3)xml檔案解析
4)oa系統中,組織結構的處理
5)junit單元測試框架
-底層設計是經典的組合模式:testcase(葉子)、testunite(容器)、test介面(抽象)
學習筆記 設計模式 9 組合模式
在上乙個設計模式中,我們講到了組合模式的例子。在那個例子中,我們利用迭代器將餐廳的選單 類a 類b 進行了改造,使其可以通用地進行列舉操作,現在我們的餐廳又遇到了乙個新的問題,在原來的選單中,老闆要求加上新的選單,而新的選單不是與原來的選單是並列的關係,而是包含的關係!新增的選單是原來選單的子項。可...
設計模式8 組合模式
組合模式首先想到的就是樹形結構,比如我們常用的檔案結構,請看windows的檔案結構 無論是檔案或者是資料夾,常用操作都是一致的,比如 複製 貼上 剪下 刪除 所佔空間大小。我們並沒有刻意的去分他是資料夾還是檔案。我們可以把資料夾看成是組合物件,把每乙個檔案看成是單個物件。組合模式模糊了這兩個概念,...
《設計模式12 組合模式
組合模式其實是乙個很形象的模式。它也被稱為部分整體模式。組合模式的結構就如同樹狀圖一樣。而樹就是枝幹 葉子的組合,組合模式可以形象的這麼理解。其實資料夾是乙個很好的組合模式的體現。乙個資料夾 樹根root 下可能有多個資料夾 枝幹trunk 可能是單個的檔案 樹葉leaf 而枝幹是可以繼續向下延伸的...