定義:
將物件組合成樹形結構以表示「部分—整體」的層次結構,使得使用者對單個物件和組合物件的使用具有一致性。
組合模式主要用來處理一些具有「容器特徵」的物件,即他們在充當物件的同時,又可以作為容器包含其他的多個物件。也就是說組合模式表達的是一種樹形的結構,將資料結構中的「樹」,用物件導向的方式表現出來了,而且表達的是一種多叉樹。
看如下的通用類圖:
源**如下:
/*
* 抽象節點,定義所有節點的共性
*/public abstract class component
public void setdata(string data)
}
/*
* 葉節點,相當於單個物件
*/public class leaf extends component
/*
* 分支節點,相當於組合物件
*/public class branch extends component
public void remove(component component)
public arraylistgetchildren()
}
public class client
//遍歷樹,輸出資料
public static void display(branch root)
else
} }}
組合模式的優點:
1、乙個樹形結構中所有節點都是component,區域性和整體對呼叫者來說沒有區別,高層模組不必關心自己處理的是單個物件還是整個組合結構,簡化了高層模組的**。
2、節點增加自由
後序:對這個模式現在還不是很理解,這不就是樹結構的物件導向的表示嗎?還有其他的什麼深意嗎?有待於通過實踐加深理解。
設計模式學習筆記 組合模式
聽名字就像是把什麼東西組合在一起的設計模式,所以 組合模式就是將兩個類中的一些共同的方法抽象在一起然而,很多時候,一些類中的方法很明顯會不一樣,這裡,感覺 headfirst 上那個例子就挺好的,然後我做了下修改。public inte ce menuitem首先去設計乙個選單選項,一些和選單公有的...
《設計模式》學習筆記 組合模式
組合模式 composite pattern 將物件組合成樹形結構以表示 部分 整體 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。掌握組合模式的重點是要理解清楚 部分 整體 還有 單個物件 與 組合物件 的含義。組合模式可以讓客戶端像修改配置檔案一樣簡單的完成本來需要流程控制...
設計模式學習筆記之組合模式
組合模式 允許你將物件組合成樹形結構來表現 整體 部分 層次結構。組合能讓客戶以一致的方式處理個別物件以及物件組合。使用組合結構,我們能把相同的操作應用在組合和個別物件上。換句話說,在大多數情況下,我們可以忽略物件組合和個別物件之間的差別。說明 1 組合模式使新增或者刪除子節點變得容易 場景 1 想...