设计模式之组合模式,component
2013-11-29 18:14
162 查看
package liu.composite.demo; public abstract class Component { public String name; public Component(String name){ this.name = name; } public Component(){ } public abstract void add(Component c); public abstract void remove(Component c); public abstract void display(int depth); } ----------------------------- package liu.composite.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Composite extends Component { public Composite(String name){ super(name); } private List<Component> children = new ArrayList<Component>(); @Override public void add(Component c) { children.add(c); } @Override public void remove(Component c) { children.remove(c); } @Override public void display(int depth) { for(int i = 0 ;i<depth;i++) System.out.print("-"); System.out.println(name); for(Iterator tmp = children.iterator();tmp.hasNext();){ ((Component) tmp.next()).display(depth+2); //System.out.println(); } } } --------------------------- package liu.composite.demo; public class Leaf extends Component { public Leaf(String name){ super(name); } @Override public void add(Component c) { System.out.println("can not add to a leaf"); } @Override public void remove(Component c) { System.out.println("can remove from a leaf"); } @Override public void display(int depth) { for(int i = 0 ;i<depth;i++) System.out.print("-"); System.out.println(name); } } ---------------------------------- package liu.composite.demo; public class Main { public static void main(String[] args) { Composite root = new Composite("root"); root.add(new Leaf("Leaf A")); root.add(new Leaf("Leaf B")); Composite comp = new Composite("Composite x"); comp.add(new Leaf("Leaf XA")); comp.add(new Leaf("Leaf XB")); root.add(comp); Composite comp2 = new Composite("Composite xy"); comp2.add(new Leaf("Leaf XYA")); comp2.add(new Leaf("Leaf XYB")); comp.add(comp2); root.add(new Leaf("Leaf C")); Leaf leaf = new Leaf("Leaf D"); root.add(leaf); root.remove(leaf); root.display(1); } } |
相关文章推荐
- 设计模式--迭代器与组合模式Iterator&Component
- Java设计模式:组合模式 Component
- 设计模式-组合模式(Component)
- Android 最常用的设计模式二 安卓源码分析——组合模式(component)
- 设计模式04-组合设计模式(component)
- 设计模式深入学习---Component组合模式(结构型模式)
- <Head First 设计模式>:组合模式:Component
- 设计模式之组合模式学习理解
- 201802170025->深入浅出设计模式:c#组合模式
- 设计模式之组合模式
- java设计模式之组合模式
- 设计模式学习之组合模式(Composite)
- 设计模式(9) ------- 组合模式
- 设计模式之组合模式
- Android设计模式系列-组合模式
- Java组合设计模式
- 设计模式—组合模式
- JUnit|测试驱动|组合设计模式
- 设计模式之组合模式
- 设计模式之组合模式