组合模式


一、定义

组合模式(Composite):将对象组合成树形结构以表示’部分-整体‘的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

二、优缺点

优点:组合模式可以让客户端一致的使用组合结构和单个对象。当需求是体现部分与整体层次的结构时,以及希望可以忽略组合对象和单个对象的不同,统一使用组合中的所有对象时,就可以用组合模式。

缺点:创建枝节点和子节点都是使用实现类,违背了依赖倒置原则。

三、示例代码

/*所有实现类的共有接口,用于访问和管理子部件*/
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 display(int depth);

}
/*枝节点*/
public class Composite extends Component {
    private List children = new ArrayList<>();

    public Composite(String name) {
        super(name);
    }


    @Override
    public void add(Component component) {
        children.add(component);
    }

    @Override
    public void remove(Component component) {
        children.remove(component);
    }

    @Override
    public void display(int depth) {

        StringBuilder stringBuilder=new StringBuilder();
        for (int i = 0; i