設計模式總共有23種模式這僅僅是爲了一個目的:解耦+解耦+解耦...(高內聚低耦合知足開閉原則)java
將對象以樹形結構組織起來,以達成「部分-總體」 的層次結構。設計模式
想到Composite就應該想到樹形結構圖。組合體內這些對象都有共同接口,當組合體一個對象的方法被調用執行時,Composite將遍歷(Iterator)整個樹形結構,尋找一樣包含這個方法的對象並實現調用執行。能夠用牽一動百來形容。spa
1.使客戶端調用簡單,客戶端能夠一致的使用組合結構或其中單個對象,用戶就沒必要關係本身處理的是單個對象仍是整個組合結構,這就簡化了客戶端代碼。
2.更容易在組合體內加入對象部件. 客戶端沒必要由於加入了新的對象部件而更改代碼。設計
1.文件目錄與實際目錄的展現component
附上Composite的代碼:對象
public class Composite extends Component{ private ArrayList list = new ArrayList(); public void add(Component component){ list.add(componet); } public void remove(Componet componet){list.remove(component);} public Component getChild(int index){ (Component)list.get(index);} public void operation(){ for(Object o : list){ ((Component)o).operation(); } }
這個部分比較好理解。能夠與文件系統來舉例說明。blog
一個文件dir裏能夠有dir也能夠有file。dir種能夠add/remove dir/file可是file中不能add dir/file。你能夠分析出dir中會有一個存放dir/file的list。接口