首页/开发/代码质量与评审速查/关注点分离(Separation of Concerns)
设计原则与模式62 条

关注点分离(Separation of Concerns)

把不同关注点(表现、业务、持久化、横切能力)分开组织:Dijkstra 提出的设计视角,MVC、分层、AOP 都是它的具体形态;关注点边界与团队边界常一致。

形态分层、MVC、模块化、AOP
收益可独立理解、替换与测试
边界关注点定义随领域变化,无统一分法

横切关注点示例

横切关注点示例
// 日志、鉴权、事务:散布在每个 service 方法里
// 抽离为切面/中间件后:业务方法只留业务
@Transactional
public void transfer(...) { ... }

易错点

  • 为分离而分离:样板代码翻倍,追一个调用要跨五层
  • 横切关注点散落:切面意识缺失,重复实现

数据来源与参考

  • Edsger W. Dijkstra(1974)关于关注点分离的论述
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌