設計模式之Composite

設計模式總共有23種模式這僅僅是爲了一個目的:解耦+解耦+解耦...(高內聚低耦合知足開閉原則)java

Composite定義

將對象以樹形結構組織起來,以達成「部分-總體」 的層次結構。設計模式

想到Composite就應該想到樹形結構圖。組合體內這些對象都有共同接口,當組合體一個對象的方法被調用執行時,Composite將遍歷(Iterator)整個樹形結構,尋找一樣包含這個方法的對象並實現調用執行。能夠用牽一動百來形容。spa

Composite好處?

1.使客戶端調用簡單,客戶端能夠一致的使用組合結構或其中單個對象,用戶就沒必要關係本身處理的是單個對象仍是整個組合結構,這就簡化了客戶端代碼。
2.更容易在組合體內加入對象部件. 客戶端沒必要由於加入了新的對象部件而更改代碼。
設計

Composite應用?

1.文件目錄與實際目錄的展現component

Composite模式結構?

附上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。接口

相關文章
相關標籤/搜索