天天看點

Java設計模式--組合模式組合模式Composite Pattern類圖模式的結構與使用簡單的例子執行效果圖組合模式的優點适用組合模式的情景下載下傳源碼請到

将對象組合成樹形結構以表示“部分-整體”的層次結構。composite使使用者對單個對象群組合對象的使用具有一緻性。

compose objects into tree structures to represent part-whole hierarchies. composite lets clients treat individual objects and compositions of objects uniformly.

Java設計模式--組合模式組合模式Composite Pattern類圖模式的結構與使用簡單的例子執行效果圖組合模式的優點适用組合模式的情景下載下傳源碼請到

組合方法模式的結構中包括三種角色。

+ 抽象元件(abstract component):是一個接口(抽象類),該接口(抽象類)定義了個體對象群組合對象需要實作的關于操作其子節點的方法,比如add()、remove()以及getchild()等方法。抽象元件也可以定義個體對象群組合對象用于操作其自身的方法,比如isleaf()方法等。

+ composite(composite node):實作component接口類的執行個體,composite節點不僅實作component接口,而且可以含有其他composite節點或leaf節點的引用。

+ leaf節點(leaf node):實作component接口類的執行個體,leaf節點實作composite接口,不可以含有其他composite節點或leaf節點的引用,是以,葉節點在實作component接口有關操作子節點的方法時,比如add()、remove()和getchild()方法,可讓方法抛出一個異常,也可以實作為空操作。

Java設計模式--組合模式組合模式Composite Pattern類圖模式的結構與使用簡單的例子執行效果圖組合模式的優點适用組合模式的情景下載下傳源碼請到

組合模式中包含個體對象群組合對象,并形成樹形結構,使使用者可以友善地處理個體對象群組合對象。

組合對象和個體對象實作了相同的接口,使用者一般無須區分個體對象群組合對象。

當增加新的composite節點和leaf節點時,使用者的重要代碼不需要作出修改,例如,如果增加一個建立企業上司和一般職員的composite節點和leaf節點,那麼computersalary并不需要修改,就可以計算一個部門的薪水總和。

當想表示對象的部分-整體層次結構。

希望使用者用一緻的方式處理個體對象群組合對象。

<a href="https://github.com/androidwolf">mygithub</a>