敏捷開發原則-SRP(單一職責原則)
阿新 • • 發佈:2019-01-11
SRP(Single Responsibility Principle):
定義:就一個類而言,應該僅有一個引起它變化的原因。(類,介面,方法等,都應該使用該原則)
如果一個類承擔了過多的職責,那麼引起該類變化的原因也會隨之變多。
例如:
一個圖形類中包含了draw() 繪畫功能和 area(), setWidth(), setHeight() 等圖形自身的屬性。
這樣的話 如果圖形屬性的計算方式發生改變,則這個類就要做出對應的修改。同樣的,如果圖形的繪畫功能做出改變 那麼這個類也要同步的做出修改。
這樣這個類其實已經開始違反SRP原則,隨著Graphical類負責的職責越來越多,那麼該類引起變化的原因也越來越多。就等於把這些職責耦合在一起了,這種耦合很容易引起脆弱的設計。
如果以這樣的方式拆分職責,讓不同的類去處理不同的職責,那麼這2個類之間的變動就互不影響。
而且單一類中處理單一的職責可以提高程式碼的可讀性,減低程式碼的複雜度。變相的提高了程式碼的可維護性。也能使得程式碼變得高內聚,低耦合。
總結:
SRP不是極端的要求我們物件只能定義單一的職責,它是通過這種極端的方式告訴我們,在定義物件職責時要著重考慮物件職責與物件之間的所屬關係。
雖然SRP的優點很明顯,但是實現起來卻很困難,因為職責的劃分並沒有固定的標準,並且每個開發人員的職責定位都不相同。