定义
就一个类而言,应该仅有一个引起它改变的原因。
原因
需求的变化会反映为类的职责的变化,过多的职责耦合在一起,使得一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。
举例
下面的Modem(调制解调器)接口具有两个职责,一个是连接管理(dial和hangup方法),另一个是数据通信(send和recv方法)。
public interface Modem {
void dial(String pno);
void hangup();
void send(char c);
void recv();
}
这两个职责是否应该被分开,这依赖于需求变化的方式。
分开
如果需求的变化会单独影响连接管理的职责,比如连接管理方法的签名发生变化,那么就会导致调用数据通信方法的类必须重新编译,这种情况下这两个职责就应该被分离。不分开
如果需求的变化总是导致这两个职责同时变化,那么就不应该分离它们。实际上,分离它们就会有不必要的复杂性的臭味。
结论
SRP是所有原则中最简单的之一,也是最难正确运用的之一。我们会自然地将职责混合在一起。软件设计真正要做的许多内容,就是发现职责并把那些职责分离。
单一职责原则(SRP)指出,一个类应该只有一个引起它改变的原因。本文通过解释SRP的概念及其重要性,并提供调制解调器接口的例子来阐述如何根据需求变化决定职责是否应该分离。
1255

被折叠的 条评论
为什么被折叠?



