首页/开发/代码质量与评审速查/单一职责原则 SRP(Single Responsibility Principle)
设计原则与模式62 条

单一职责原则 SRP(Single Responsibility Principle)

一个模块应该只有一个被修改的原因(Robert C. Martin 表述):把「一个类一个职责」落到「一个变化原因」,需求变化只影响相关模块;判断用变化轴而非代码行数。

核心只对一个变化原因负责
信号同类因不同原因被反复修改
关联高内聚、低耦合、发散式变化

变化轴拆分示例

变化轴拆分示例
// 之前:Employee 承担 算工资 + 存数据库 + 出报表
// 之后
class Employee { Money calculatePay(); }
class EmployeeRepository { void save(Employee e); }
class EmployeeReporter { String report(Employee e); }
「职责」不是「功能」:同一主题下的多个方法通常仍属一个职责,别按方法数量切碎。

易错点

  • 把职责拆得过细:类数量激增,阅读需要跨十个文件
  • 以技术层(DAO/Service)替代职责判断:仍会因业务原因不断膨胀

数据来源与参考

  • Robert C. Martin(Uncle Bob)· SRP 论述(《Clean Architecture》等)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌