| 划分依据 | 哪些决策可能变化(存储格式、算法、外部系统) |
|---|---|
| 暴露内容 | 稳定的抽象与契约,不暴露实现细节 |
| 收益 | 局部修改不影响其他模块,支持并行开发 |
变化点识别示例
| 可能变化的决策 | 隐藏方式 |
|---|---|
| 存储格式 | 仓储接口后替换实现 |
| 第三方接口 | 防腐层与适配器 |
| 算法实现 | 策略接口按配置选择 |
| 部署拓扑 | 配置注入而非硬编码 |
信息隐藏与“隐藏数据”不同:隐藏的对象是易变的设计决策。
Parnas 提出:模块划分应隐藏“可能变化的决策”,接口只暴露稳定信息;与按处理步骤划分相比,更利于应对变化与独立开发。
| 划分依据 | 哪些决策可能变化(存储格式、算法、外部系统) |
|---|---|
| 暴露内容 | 稳定的抽象与契约,不暴露实现细节 |
| 收益 | 局部修改不影响其他模块,支持并行开发 |
| 可能变化的决策 | 隐藏方式 |
|---|---|
| 存储格式 | 仓储接口后替换实现 |
| 第三方接口 | 防腐层与适配器 |
| 算法实现 | 策略接口按配置选择 |
| 部署拓扑 | 配置注入而非硬编码 |