组合模式UML结构图
Component(抽象构件):包含了所有子类共有行为的声明和实现。在抽象构件中定义了访问及管理它的子构件的方法。Leaf(叶子构件):实现了在抽象构件中定义的行为。Composite(容器构件):提供一个集合用户存储子结点,实现在抽象构件中定义的行为,包括那些访问及管理子构件的方法,在业务方法中可以递归调用其子结点的业务方法。组合模式代码框架
abstract class Component { public abstract void add(Component c); public abstract void remove(Component c); public abstract Component getChild(int index); public abstract void operation(); } class Leaf extends Component { public void add(Component c) { //异常处理和提示 } public void remove(Component c) { //异常处理或提示 } public Component getChild(int index) { //异常处理或错误提示 return null; } public void operation() { //叶子构件具体逻辑业务 } } class Composite extends Component { private ArrayList<Component> list = new ArrayList<>(); public void add(Component c) { list.add(c); } public void remove(Component c) { list.remove(c); } public Component getChild(int index) { return (Component)list.get(index); } public void operation() { //容器构架的具体逻辑业务 //递归调用成员构件的逻辑业务 for(Object object : list) { ((Component)object).operation(); } } }