组合(Composition)
缩写:无
简述
通过持有其它对象并委托其能力来构建功能的方式,表达「有一个」而非「是一种」。组合降低层次耦合、便于运行时替换部件,是复杂系统更稳妥的默认结构手段。
使用场景
功能拼装、策略嵌入、中间件管道、领域聚合。
实践与应用
• 把变化点做成可替换组件
• 明确所有权与生命周期
• 委托而非暴露内部
注意事项
• 过深委托链难追踪
• 循环组合引用
对比与易混
| 组合 | 继承 | |
|---|---|---|
| 结构 | 持有并委托 | 沿父类型获得行为 |
| 默认建议 | 变化点优先组合 | 分类关系清晰时再用继承 |
关联术语
• 继承:用持有部件对照「是一种」复用
• 委托:把行为转交内部对象
• 封装:组合时仍应隐藏内部
• 依赖注入:外部注入被组合的依赖