组合模式
定义
- 对组合执行操作如同对其中的每一个元素进行操作
- 引申
- 组合与元素实现相同的操作接口
适用场景
- 可以用树形结构抽象的业务场景,元素表示叶节点,组合对象表示非叶节点
- 如:公司组织架构
- 操作系统文件目录组织结构
- 元素对象和组合对象具有相同的对外接口
- 因此用户不知道他操作的组合对象还是元素对象
使用方式
interface Action {
void doA();
}
class AComposite implements Action {
// elements集合中即包含组合对象,也包含元素对象
private Collection<Action> elements;
@Override
public void doA() {
// 对于组合对象,递归实现doA
elements.forEach(ele->doA());
}
}
class ActionImpl implements Action {
@Override
public void doA() {
......
}
}