天天看點

靈活設計-SRP:單一職責原則總結:

SRP:單一職責原則——一個類應該隻有一個發生變化的原因。

如果一個類承擔的職責過多,就等于把這些職責耦合在了一起。一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。

靈活設計-SRP:單一職責原則總結:

這個設計,Rectangle類有兩個職責:

1.提供計算矩形的數學模型;

2.把矩形在一個圖形使用者界面上繪制出來。

目前的設計會有下面的問題:

a.因為Rectangle需要在使用者界面繪制圖形,需要引入GUI元件(如System.Drawing.dll),在僅僅想使用MathApplication的環境中,也需要引入GUI元件。

b.如果GraphApplication需要對Draw()方法進行修改,一定要對MathApplication進行測試和部署。

下面展示将兩個職責分開的改進設計。 

靈活設計-SRP:單一職責原則總結:

 GraphApplication已經不必引用GUI元件,對Draw業務邏輯的修改不會影響MathApplication。

總結:

SRP是所有原則中最簡單的原則之一,也是最難正确運用的原則之一。我們會自然的把職責結合在一起,靈活設計(這是一個重新設計,代碼重構的過程)就是要分離這些職責。當你被變化擊中時要考慮分離職責,如果應用程式的變化方式總是導緻職責同時變化就不必分離它們,分離會引進不必要的複雜性的臭味。