Java 中組合模型之對象結構模式的詳解
Java 中組合模型之對象結構模式的詳解
一、意圖
將對象組合成樹形結構以表示”部分-整體”的層次結構。Composite使得用戶對單個對象和組合對象的使用具有一致性。
二、適用性
你想表示對象的部分-整體層次結構
你希望用戶忽略組合對象與單個對象的不同,用戶將統(tǒng)一使用組合結構中的所有對象。
三、結構
四、代碼
public abstract class Component { protected String name; //節(jié)點名 public Component(String name){ this.name = name; } public abstract void doSomething(); }
public class Composite extends Component { /** * 存儲節(jié)點的容器 */ private List<Component> components = new ArrayList<>(); public Composite(String name) { super(name); } @Override public void doSomething() { System.out.println(name); if(null!=components){ for(Component c: components){ c.doSomething(); } } } public void addChild(Component child){ components.add(child); } public void removeChild(Component child){ components.remove(child); } public Component getChildren(int index){ return components.get(index); } }
public class Leaf extends Component { public Leaf(String name) { super(name); } @Override public void doSomething() { System.out.println(name); } }
public class Client { public static void main(String[] args){ // 構造一個根節(jié)點 Composite root = new Composite("Root"); // 構造兩個枝干節(jié)點 Composite branch1 = new Composite("Branch1"); Composite branch2 = new Composite("Branch2"); // 構造兩個葉子節(jié)點 Leaf leaf1 = new Leaf("Leaf1"); Leaf leaf2 = new Leaf("Leaf2"); branch1.addChild(leaf1); branch2.addChild(leaf2); root.addChild(branch1); root.addChild(branch2); root.doSomething(); } } 輸出結果: Root Branch1 Leaf1 Branch2 Leaf2
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Java開發(fā)環(huán)境配置JDK超詳細整理(適合新手入門)
這篇文章主要給大家介紹了關于Java開發(fā)環(huán)境配置JDK超詳細整理的相關資料,非常適合新手入門,JDK是Java語言的軟件開發(fā)工具包,主要用于移動設備、嵌入式設備上的java應用程序,需要的朋友可以參考下2023-11-11Java?基于Hutool實現(xiàn)DES加解密示例詳解
這篇文章主要介紹了Java基于Hutool實現(xiàn)DES加解密,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08spring data jpa開啟批量插入、批量更新的問題解析
這篇文章主要介紹了spring data jpa開啟批量插入、批量更新問題,本文通過圖文實例相結合給大家介紹的非常詳細,需要的朋友可以參考下2021-07-07java創(chuàng)建excel示例(jxl使用方法)
Java Excel是一開放源碼項目,通過它Java開發(fā)人員可以讀取Excel文件的內容、創(chuàng)建新的Excel文件、更新 已經(jīng)存在的Excel文件。下面是使用方法,包括去掉網(wǎng)格線、字體設置、單元格設置、對齊方式等設置2014-03-03JavaEE SpringMyBatis是什么? 它和Hibernate的區(qū)別及如何配置MyBatis
這篇文章主要介紹了JavaEE Spring MyBatis是什么? 它和Hibernate的區(qū)別有哪些?如何配置MyBatis?本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08