SRP
就一个类而言,应该仅有一个引起它变化的原因
什么是职责?我们把职责定义为“变化的原因”(a reason for change),如果你能想到多于一个的动机去改变
一个类,那么这个类就具有多于一个的职责
如果一个类的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会抑止这个类完成其他职责的能力。例子:
interface Modem
{
public void dial(String pno);
public void hangup();
public void send(char c);
public void recv();
}
该接口中有两个职责,一个是连接管理,一个是数据通信,这两个职责是否被分开,依赖于应用程序的变化方式,如果application的变化会影响连接,那么这个接口就有僵化的臭味,需要分离他们。反之,如果应用程序的变化总是导致两个职责同时变化,就不必分离他们。