第8章 单一职责原则 (SRP)
内聚性(cohesion): 一个模块的组成元素之间的功能相关性
每个职责都是变化的一个轴线。当需求变化时,该变化会反映为类的职责变化,如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。如果一个类承担的职责过多,就等于把这些职责耦合在了一起。
- 什么是职责
在SRP中,我们把职责定义为“变化的原因”。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。变化的轴线仅当变化实际发生时才具有真正的意义。如果没有征兆,那么去应用SRP,或者任何其它原则都是不明智的。 - 分离耦合的职责
常常会有一些和硬件或者操作系统的细节有关的原因,迫使我们把不愿耦合在一起的东西耦合在一起。 - 持久化
业务规则和对于持久化的控制在大多数情况下决不应该混合在一起。业务规则往往会频繁的变化,而持久化的方式却不会如此频繁的变化,并且变化的原因也是不同的。把业务规则和持久化子系统绑定在一起的做法是自讨苦吃
结论
SRP是所有原则中最简单的之一,也是最难运用的之一。我们会自然地把职责结合在一起。软件设计真正要做的许多内容,就是发现职责并把这些职责分离。