SRP
就一個類而言,應該僅有一個引起它變化的原因
什麼是職責?我們把職責定義爲“變化的原因”(a reason for change),如果你能想到多於一個的動機去改變
一個類,那麼這個類就具有多於一個的職責
如果一個類的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會抑止這個類完成其他職責的能力。例子:
interface Modem
{
public void dial(String pno);
public void hangup();
public void send(char c);
public void recv();
}
該接口中有兩個職責,一個是連接管理,一個是數據通信,這兩個職責是否被分開,依賴於應用程序的變化方式,如果application的變化會影響連接,那麼這個接口就有僵化的臭味,需要分離他們。反之,如果應用程序的變化總是導致兩個職責同時變化,就不必分離他們。