設計原則--》單一職責原則

若是一個類承擔的職責過多,就等於把這些職責耦合在了一塊兒。一個職責的變化可能削弱或者抑制這個類完成其餘職責的能力。java

這種耦合會致使脆弱的(fragile)設計,當變化時設計會遭受到意想不到的破壞。函數

什麼是職責?

在SRP中,咱們把職責定義爲「變化的緣由」。若是你可以想到多於一個的動機去改變一個類,那麼這個類就具備多於一個的職責。有時,咱們很難注意到這一點。咱們習慣於以組的形式去考慮職責。spa

Modem.java --違反SRP設計

interface Modem{
     public void dial(String pno);
     public void hangup();
     public void send(char c);
     public void recv();
}

然而,該接口中卻顯示出兩個職責。第一個職責是鏈接管理;第二個職責是數據通訊。dial和hangup函數進行調制解調器的鏈接處理,而send和recv 函數進行數據通訊。code

interface DataChannel{
    public void send(char c);
    public void recv();
}
interface Connection{  
    public void dial(String pno);
    public void hangup();
}


....接口

分離耦合的職責

。。。。io

持久化

....class

結論

SRP是全部原則中最簡單的之一,也是最難正確運用的之一。咱們天然地把職責結合在一塊兒。軟件

軟件設計是真正要作的許多內容,就是發現職責並把那些職責相互分離。事實上,咱們將要論述的其他原則都會以忱樣或那樣的方式回到這個問題上。通信

相關文章
相關標籤/搜索