Files
hyperf_test/document/composite.md
2025-09-07 19:36:04 +08:00

43 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 组合模式 (Composite Pattern) 详解
> 组合模式是一种结构型设计模式,它允许你将对象组合成树形结构来表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
#### 核心概念
组合模式包含以下几个关键组件:
#### 结构
- Component(抽象构件): 定义组合中所有对象的通用接口,可以是抽象类或接口
- Leaf(叶子构件): 表示组合中的叶子节点对象,没有子节点
- Composite(容器构件): 定义有子部件的部件行为存储子部件并在Component接口中实现与子部件相关的操作
#### 应用场景
组合模式适用于以下情况:
- 需要表示对象的"部分-整体"层次结构
- 希望用户忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象
- 处理树形结构数据
#### 优缺点
##### 优点
- 简化客户端代码:客户端可以一致地处理单个对象和组合对象
- 易于新增组件类型:新增组件类型时不需要修改现有代码,符合开闭原则
- 灵活的结构:可以创建复杂的树形结构,且结构可以动态变化
##### 缺点
- 设计复杂:需要正确区分叶子节点和树枝节点,增加了系统的复杂性
- 类型检查:有时需要在运行时检查对象的类型,增加了运行时的开销
##### 实际应用
组合模式在以下场景中常见:
- 文件系统(文件和文件夹)
- GUI组件(窗口包含面板,面板包含按钮等)
- 组织结构(公司包含部门,部门包含员工)
- 菜单系统(菜单包含子菜单和菜单项)
组合模式通过树形结构组织对象,使得客户端可以统一处理简单元素和复杂元素,大大提高了系统的灵活性和可扩展性。