1. 程式人生 > >敏捷開發原則-SRP(單一職責原則)

敏捷開發原則-SRP(單一職責原則)

SRP(Single Responsibility Principle):

  定義:就一個類而言,應該僅有一個引起它變化的原因。(類,介面,方法等,都應該使用該原則)

  如果一個類承擔了過多的職責,那麼引起該類變化的原因也會隨之變多。

例如:

 

一個圖形類中包含了draw() 繪畫功能和 area(), setWidth(), setHeight() 等圖形自身的屬性。

這樣的話 如果圖形屬性的計算方式發生改變,則這個類就要做出對應的修改。同樣的,如果圖形的繪畫功能做出改變 那麼這個類也要同步的做出修改。

這樣這個類其實已經開始違反SRP原則,隨著Graphical類負責的職責越來越多,那麼該類引起變化的原因也越來越多。就等於把這些職責耦合在一起了,這種耦合很容易引起脆弱的設計。

 

 

如果以這樣的方式拆分職責,讓不同的類去處理不同的職責,那麼這2個類之間的變動就互不影響。

而且單一類中處理單一的職責可以提高程式碼的可讀性,減低程式碼的複雜度。變相的提高了程式碼的可維護性。也能使得程式碼變得高內聚,低耦合。

 

總結:

  SRP不是極端的要求我們物件只能定義單一的職責,它是通過這種極端的方式告訴我們,在定義物件職責時要著重考慮物件職責與物件之間的所屬關係。

   雖然SRP的優點很明顯,但是實現起來卻很困難,因為職責的劃分並沒有固定的標準,並且每個開發人員的職責定位都不相同。