定义
SRP: 就一个类而言,应该仅有一个引起它变化的原因。
一个类承担的责任过多,就等于把这些职责都耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。
问题来源
类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。
解决办法
遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。
应用场景
如果想到多余一个的动机去改变一个类,这个类就具有多余一个的职责。
虽然单一职责原则如此简单,并且被认为是常识,但是即便是经验丰富的程序员写出的程序,也会有违背这一原则的代码存在。为什么会出现这种现象呢?
因为有职责扩散。所谓职责扩散,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。