组合模式
定义
将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。
结构
Component(抽象构件):为叶子构件和组合构件声明统一的接口,它可以是抽象类也可以是接口。
Leaf(叶子构件):它在组合结构中表示叶子节点对象,它没有子节点,所以对于操作子节点的接口方法通过抛出异常来说明。
Composite(容器构件):它是组合结构中的容器节点对象,它的子节点可以使叶子节点对象,也可以是容器节点对象,它提供了一个list集合用于存放子节点。
类图
Component:
abstract class Component {
protected String name;
public abstract void add(Component c);
public abstract void remove(Component c);
public abstract Component getChild(int i);
public abstract void display();
}
Leaf:
public class Leaf extends Component{
public Leaf(String name){
this.name = name;
}
@Override
public void add(Component c) {
System.err.println("can not add");
}
@Override
public void remove(Component c) {
System.err.println("can not remove");
}
@Override
public Component getChild(int i) {
System.err.println("can not getChild");
return null;
}
@Override
public void disp