标签:合成 rac [] demo int 组合模式 except ext string
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式可以使用户对单个对象和组合对象的使用具有一致性。
public abstract class Component { protected String name; public Component(String name) { this.name = name; } public abstract void add(Component component); public abstract void remove(Component component); public abstract void show(int stamp); }
public class Leaf extends Component { public Leaf(String name) { super(name); } @Override public void add(Component component) { throw new UnsupportedOperationException("不支持该操作。"); } @Override public void remove(Component component) { throw new UnsupportedOperationException("不支持该操作。"); } @Override public void show(int stamp) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < stamp; i++) { builder.append("-"); } System.out.println(builder + name); } }
public class Composite extends Component { private List<Component> child = new ArrayList<>(); public Composite(String name) { super(name); } @Override public void add(Component component) { child.add(component); } @Override public void remove(Component component) { child.remove(component); } @Override public void show(int stamp) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < stamp; i++) { builder.append("-"); } System.out.println(builder + name); for (Component component : child) { component.show(stamp + 2); } } }
public class CompositeDemo { public static void main(String[] args) { Composite root = new Composite("root"); root.add(new Leaf("AA")); root.add(new Leaf("BB")); root.show(1); } }
标签:合成 rac [] demo int 组合模式 except ext string
原文地址:http://www.cnblogs.com/emoji1213/p/7629065.html