组合模式:允许将对象组合成树形结构来表现“整体/部分”的结构,让用户可以用一致的方式处理个别对象以及组合对象。
?
class="java" name="code">public abstract class Node { protected String name; protected String desc; public Node(String desc, String name) { this.name = name; this.desc = desc; } public void addChild(Node node) { throw new UnsupportedOperationException(); } public void removeChild(Node node) { throw new UnsupportedOperationException(); } public Node getChild(int index) { throw new UnsupportedOperationException(); } public Iterator createIterator() { throw new UnsupportedOperationException(); } public void print() { } }
?
public class Leaf extends Node { public Leaf(String desc, String name) { super(desc, name); } public void print() { System.out.print("-name:" + name + "-desc:" + desc); System.out.println(); } }
?
public class NodeItem extends Node { public NodeItem(String desc, String name) { super(desc, name); this.childs = new ArrayList<Node>(); } private List<Node> childs; public void addChild(Node node) { this.childs.add(node); } public void removeChild(Node node) { this.childs.remove(node); } public Node getChild(int index) { return childs.get(index); } public Iterator createIterator() { return this.childs.iterator(); } public void print() { System.out.println("-name:" + name + "-desc:" + desc); for(Node child: childs) { child.print(); } } }
?