單一職責原則(設計模式6大原則)


1.單一職責原則
2.開放-封閉原則
3.依賴倒轉原則
4.里氏代換原則
5.接口隔離原則
6.迪米特原則

 

1.單一職責原則

什么是單一職責原則?

單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的相應職責,或者可以定義為:就一個類而言,應該只有一個引起它變化的原因。

單一職責原則是實現高內聚、低耦合的指導方針,它是最簡單但又最難運用的原則

單一職責原則是最簡單的面向對象設計原則,它用於控制類的粒度大小

通俗一點:
1.就是一個類越復雜,可能被復用的可能性越小
2.類越復雜,變動代碼可能會有意想不到的錯誤。

 

我認為單一職責的目的其實是為了最大可能的復用。

為什么要復用?舉個栗子:
現在有這么一個servlet,它包含了數據庫的連接,驗證密碼是否正確的數據庫操作,同時有登錄的業務邏輯(當用戶名正確時跳轉主頁,密碼失敗時跳轉登錄頁面)。

咋一看沒什么問題,實現了登錄功能。

現在我們要增加一個功能,修改密碼,只有當舊的密碼正確,才能修改密碼。
老辦法:把登錄的代碼(數據庫連接,驗證密碼是否正確的數據庫操作)粘貼過來,新寫修改密碼的業務邏輯(用戶名正確則可以修改,否則修改失敗)。
其實兩個servlet中只有最后一點業務邏輯操作不同。(登錄/登錄失敗)(修改密碼成功/修改密碼失敗)

看起來也不錯,也實現了功能。

但是現在需求又更改了:
1.數據庫名字更換/連接密碼更改,所有servlet的數據庫的連接都要修改
2.要求只有啟用狀態的的賬號能夠登錄,驗證密碼是否正確的數據庫操作也有兩個地方要修改

沒使用復用的話,一個小改動,所有重復代碼都要改動。

對於沒有使用復用的代碼,維護起來簡直就是災難!


怎么這些代碼可以復用起來?

(一個類越復雜,可能被復用的可能性越小)

(一個類越簡答,功能越單一,可能被復用的可能性越大)

讓他們“單一職責”,功能單一就可以啦
數據庫的連接抽象成一個類,負責數據庫的連接
數據庫操作抽象成一個類,負責對數據操作
servlet中,負責業務邏輯判斷。
如果使用復用,僅需要一點簡單的修改,全局的代碼都能修改。

所以我們設計的類盡可能的職責單一,盡可能的功能單一,這樣才能保證我們能夠順利的復用。

 

為什么系統橫向分為dao,service,controller三層,微服務則是縱向的將服務進行切分。

目的:

減少代碼的冗余,同時做到易修改。

職責單一,可以復用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM