所谓单一职责,首先要了解什么事职责,在SRP中,职责定义为“变化的原因”,而单一职责所要求的就是:就一个类而言,应该仅有一个因其他变化的原因。
为什么要把职责分离到单一的类里面呢,因为每一个职责都是变化的一个轴线(an axis of change),当需求变化时,该变化会反应为类职责的变化。如果一个类承当一个以上的职责,那么因其他变化的原因就有多个,如果承担的职责过多,就等于把这些职责耦合在一起了,一个职责的变化可能会削弱或者抑制这个类其他职责的能力。
遵循单一职责原的优点有:
  • 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
  • 提高类的可读性,提高系统的可维护性;
  • 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。