設計模式之Composite


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

Composite定義

將對象以樹形結構組織起來,以達成“部分-整體” 的層次結構。

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

Composite好處?

1.使客戶端調用簡單,客戶端可以一致的使用組合結構或其中單個對象,用戶就不必關系自己處理的是單個對象還是整個組合結構,這就簡化了客戶端代碼。
2.更容易在組合體內加入對象部件. 客戶端不必因為加入了新的對象部件而更改代碼。

Composite應用?

1.文件目錄與實際目錄的展示

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();
    }

}

這個部分比較好理解。可以與文件系統來舉例說明。

一個文件dir里可以有dir也可以有file。dir種可以add/remove dir/file但是file中不能add dir/file。你可以分析出dir中會有一個存放dir/file的list。

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com