设计模式 | 组合模式

104 阅读1分钟

定义

将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

使用场景

表示对象的部分-整体层次结构。

Java 代码示例

// 抽象根节点
public abstract class Component {
    protected String mName;

    public Component(String name) {
        mName = name;
    }

    public abstract void doSomething();
}

// 枝干节点
public class Composite extends Component {
    private List<Component> mComponents = new ArrayList<>();
    
    public Composite(String name) {
        super(name);
    }

    @Override
    public void doSomething() {
        if (mComponents != null) {
            for (Component component : mComponents) {
                component.doSomething();
            }
        }
    }

    public void addChild(Component component) {
        mComponents.add(component);
    }

    public void removeChild(Component component) {
        mComponents.remove(component);
    }
    
    public Component getChild(int index) {
        return mComponents.get(index);
    }
}

// 叶子节点
public class Leaf extends Component {
    public Leaf(String name) {
        super(name);
    }

    @Override
    public void doSomething() {

    }
}