组合模式
模式描述
将对象组合成树形结构,以表示成”部分-整体“的层次结构。
优点
- 简化 Client 代码;
- 使得设计更一般化;
缺点
- 使用比较局限;
应用场景
- 表示”部分-整体“的层次结构;
- 统一使用组合结构中的所有对象
DATE | CHANGELOG |
---|---|
2023年5月7日 | 初始化 |
UML 类图
classDiagram
class Component {
<<interface>>
operation()
add(Component c)
remove(Component c)
getChild(int)
}
class Composite {
operation()
add(Component c)
remove(Component c)
getChild(int)
}
Component <|.. Composite
Composite o.. Composite
class Leaf {
operation()
}
Component <|.. Leaf
Component <-- Client
参与者
Component
- 定义 Client 需要的方法;
- 适当情况下,提供默认实现;
- 声明访问和管理 Component 操作;
Composite
- Component 的实现;
- 存储子 Component;
- 实现 Component 中与子 Component 有关的操作;
Leaf
- 叶子节点,没有子 Component;
Client 类
客户端。
数据流
- Client 仅仅与 Component 进行交互;
相关模式
- 职责链模式:通常”部分-整体“的连接使用职责链模式;
- 装饰模式:通常与组合模式一起使用,它们有公共的父类。
- 享元模式:共享组件;
- 迭代器模式:通常用来遍历组合模式;
- 访问者模式:将分布在 Composite 和 Leaf 类中的操作和行为局部化;
补充
- 数据可以使用组合模式来表示,业务需求可以通过在树上的递归遍历算法来实现。