组合模式(Composite Pattern)属于结构型模式。组合模式又叫作部分整体模式,它是一种将对象组合成树状层次结构的模式,用来表示整体-部分的关系,使用户对单个对象和组合对象具有一致的访问性。组合模式有透明方式和安全方式两种实现方式
业务代码
//抽象节点 public abstract class Component { abstract void add(Component component); abstract void remove(Component component); abstract Component getChild(int i); abstract void operation(); } //叶子节点 class Leaf extends Component{ private String name; public Leaf(String name) { this.name = name; } @Override void add(Component component) {} @Override void remove(Component component) {} @Override Component getChild(int i) { return null; } @Override void operation() { System.out.print(name); } } //树枝节点 class Composite extends Component{ private ArrayList<Component> children = new ArrayList<>(); @Override void add(Component component) { children.add(component); } @Override void remove(Component component) { children.remove(component); } @Override Component getChild(int i) { return children.get(i); } @Override void operation() { children.forEach(Component::operation); } }
客户端
public class Client { public static void main(String[] args) { Component level1 = new Composite(); level1.add(new Leaf("1")); level1.add(new Leaf("2")); Component level2 = new Composite(); level2.add(new Leaf("2.1")); level1.add(level2); level1.operation(); } }