本文为敏捷软件开发 - 原则、模式与实践系列的一部分。
本文对应原书第8章。
单一责任原则 (SRP - The Single-Responsibility Principle)
就一个类而言,应该仅有一个引起它变化的原因。
在SRP中,我们把职责定义为‘变化的原因’。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。
如果决定职责的粒度,要依赖于具体程序的变化方式。如果程序的变化会影响某一个细分职责,那就肯定要分开它们,否则会带来僵化性的臭味。但如果应用程序的变化总是导致这两个职责同时变化,那么久不必分开它们。实际上,分离它们反而会具有不必要的复杂性的臭味。变化的时机仅当实际发生时才具有真正的意义。如果没有征兆,那么去应用SRP,或者任何其他原则都是不明智的。
结论
SRP是所有原则中最简单的之一,也是最难正确运用的之一。我们会自然地把职责结合在一起。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。事实上,我们将要论述的其余原则都会以这样或那样的方式回到这个问题上。
完整内容请查看敏捷软件开发 - 原则、模式与实践系列
网友评论