1. 组件拆分核心原则:单一职责、高内聚低耦合、关注点分离、接口隔离
组件边界划分是架构设计的核心决策。四个经典原则——单一职责、高内聚低耦合、关注点分离、接口隔离——构成了划分边界的判定准则。本章从架构师视角,逐一解析每个原则在边界识别、模块职责、依赖关系上的具体应用,并给出权衡清单。
1.1 单一职责原则(SRP)
每个组件只应因一个原因而改变。拆分时,将变化的维度作为边界线:业务逻辑、持久化、通信、配置等各自独立。判定标准:如果一个组件承载了不同业务角色的变更诉求,则违反 SRP。
1.2 高内聚低耦合
组件内部元素紧密协作(高内聚),组件之间通过最小接口通信(低耦合)。内聚度可用“模块内部功能的相关性”衡量;耦合度用“组件间依赖数量和依赖方向”衡量。
1.3 关注点分离(SoC)
横切关注点(日志、鉴权、事务)与业务逻辑分离,形成独立的基础设施组件。分层架构中,每一层只处理自己的关注点。
1.4 接口隔离原则(ISP)
客户端不应依赖它不需要的方法。组件对外暴露的接口应细化到最小必要集合,避免胖接口导致不必要的依赖。
| 原则 | 核心理念 | 边界判定标准 | 常见反例 |
|---|---|---|---|
| SRP | 一个变化原因 | 是否因不同角色需求而修改? | "超级工具类"包含日志与业务 |
| 高内聚低耦合 | 内部紧密,外部松散 | 模块内功能是否相关?依赖个数≤3? | 循环依赖、上帝类 |
| SoC | 横切与业务分离 | 是否有统一抽象层处理通用逻辑? | 业务逻辑中嵌入SQL |
| ISP | 最小接口 | 调用方是否用到了全部接口方法? | 一个接口20个方法,客户端只用到2个 |
实践提示: 在大型项目中优先应用 SRP 和 SoC,它们对长期维护影响最大。高内聚和 ISP 可在代码审查阶段强化。
常见陷阱: 过度遵循单一职责导致组件粒度过细,引发"微服务灾难"。建议以"业务变更频率"为辅助指标,相同频率归属同一组件。
以上四个原则并非孤立,而是相互叠加:SRP 帮助识别变化轴,SoC 帮助分离关注点,高内聚低耦合和 ISP 分别从内部和外部确保边界清晰。实践中,任何组件边界候选都应当接受这四个原则的审查。