組合模式首先想到的就是樹形結構,比如我們常用的檔案結構,請看windows的檔案結構:
無論是檔案或者是資料夾,常用操作都是一致的,比如:複製、貼上、剪下、刪除、所佔空間大小。我們並沒有刻意的去分他是資料夾還是檔案。
我們可以把資料夾看成是組合物件,把每乙個檔案看成是單個物件。組合模式模糊了這兩個概念,他使得客戶端能夠用簡單一致的操作來操作兩個不同的東西。
將物件組合成樹形結構以表示「部分-整體」的層次結構。組合模式使得使用者對單個物件的使用具有一致性。
client:客戶端。
component:定義組合物件的介面。
leaf:組合物件中的葉子,實現component介面。
composite:組合物件中的節點,組合所有葉子,實現component介面,並且可以刪除和增加葉子。
component
public inte***ce component
composite
public class composite implements component
public void add(component pcomponent)
public void remove(component pcomponent)
@override
public void show()
} @override
public void ischild(int pfatherlevel)
private void showlevel()
system.out.println(mname);
}}
leaf
public class leaf implements component
@override
public void show()
@override
public void ischild(int pfatherlevel)
private void showlevel()
system.out.println(mname);
}}
client
public class compositetest
}
列印結果:
節點1-葉子1
-葉子2
-節點2
--葉子3
--葉子4
--葉子5
很久沒寫部落格,撿起來。學如逆水行舟,不進則退。
設計模式 (8)組合模式
組合模式 組合模式,是為了解決整體和部分的一致對待的問題而產生的,要求這個整體與部分有一致的操作或行為。部分和整體都繼承與乙個公共的抽象類,這樣,外部使用它們時是一致的,不用管是整體還是部分,使用乙個方法即可遍歷整體中的所有的部分。就像乙個樹形結構一樣。適用性 常用於組織結構,產品結構之類的整體和部...
8 組合模式
組合模式 1 組合模式 組合模式屬於物件中的結構模式,有時又叫做部分 整體模式。合成模式是將部分和整體的關係用樹結構表示出來。2 結構 以上類圖結構涉及三種角色 抽象構件角色 這是乙個抽象角色,它給參加組合的物件規定乙個介面,這個角色給出共有的介面和預設行為。樹葉構件角色 代表參加組合的樹葉物件。樹...
《設計模式12 組合模式
組合模式其實是乙個很形象的模式。它也被稱為部分整體模式。組合模式的結構就如同樹狀圖一樣。而樹就是枝幹 葉子的組合,組合模式可以形象的這麼理解。其實資料夾是乙個很好的組合模式的體現。乙個資料夾 樹根root 下可能有多個資料夾 枝幹trunk 可能是單個的檔案 樹葉leaf 而枝幹是可以繼續向下延伸的...