1、乙個類,只有乙個引起它變化的原因。應該只有乙個職責。
每乙個職責都是變化的乙個軸線,如果乙個類有乙個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當乙個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。
例如:要實現邏輯和介面的分離。
2、什麼是職責?
srp中,把職責定義為「變化的原因」。
如果你能想到n個動機去改變乙個類,那麼這個類就具有多於乙個的職責。這裡說的「變化的原因」,只有實際發生時才有意義。可能**到會有多個原因引起這個類的變化,但這僅僅是**,並沒有真的發生,這個類仍可看做具有單一職責,不需要分離職責。
3、例項:
新建乙個rectangle類,該類包含兩個方法,乙個用於把矩形繪製在螢幕上,乙個方法用於計算矩形的面積。如圖:
4、rectangle類違反了srp原則。
rectangle類具有兩個職責,如果其中乙個改變,會影響到兩個應用程式的變化。乙個好的設計是把兩個職責分離出來放在兩個不同的類中,這樣任何乙個變化都不會影響到其他的應用程式。
5、持久化:
下圖展示了一種常見的違反srp的清新。
employee類包含了業務規則和對於持久化的控制。業務規則往往會頻繁的變化,而持久化的方式卻不會頻繁變化,並且變化的原因也是完全不同,所以把業務規則和持久化子系統放在一起的做法是絕對不應該的。
6、結論:
srp是所有原則中最簡單的原則之一,也是最難正確運用的原則之一。我們會不由的把職責以組的方式形成乙個類,其實軟體設計真正要做的許多任務作就是發現職責並把那些職責相互分離。
單一職責原則 SRP
一 srp簡介 srp single responsibility principle 就乙個類而言,應該只專注於做一件事和僅有乙個引起它變化的原因。所謂職責,我們可以理解他為功能,就是設計的這個類功能應該只有乙個,而不是兩個或更多。也可以理解為引用變化的原因,當你發現有兩個變化會要求我們修改這個類...
單一職責原則 SRP
單一職責原則 single responsibility principle srp 基本概念 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。優點 問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p...
單一職責原則 SRP
學習設計原則 1.solid,kiss,yangni,dry,lod 一.solidlid原則不是乙個單一的原則 包含5個設計原則 單一職責原則,開閉原則,裡式替換原則,介面隔離原則,依賴翻轉原則.二.單一職責原則的描述 1.單一職責原則 srp 乙個類只負責完成乙個職責或者功能.不要設計大而全的類...