定義:
單一職責原則指一個類應該僅有一個引起它變化的原因。這個原則強調一個類應該只負責一個功能領域中的相應職責,或者可以理解為一個類應該只有一個改變的原因。
解決的問題:
- 降低類的復雜度,一個類只負責一項任務會更加清晰。
- 提高類的可讀性和可維護性。
- 降低修改程序所引入的風險。
使用場景:
- 當一個類承擔過多的職責,或者這些職責在概念上不緊密相關時。
- 設計類的時候,類的職責應該盡可能單一。
示例代碼:
// 不遵守單一職責原則的例子
class User {public void login(String username, String password) {// 登錄邏輯}public void register(String username, String password) {// 注冊邏輯}public void logError(String error) {// 日志記錄}
}// 遵守單一職責原則的重構
class UserAuthentication {public void login(String username, String password) {// 登錄邏輯}public void register(String username, String password) {// 注冊邏輯}
}class UserLog {public void logError(String error) {// 日志記錄}
}
在這個示例中,初始的User
類同時負責用戶認證和日志記錄兩種不同的功能。根據單一職責原則,我們將這個類分解為UserAuthentication
和UserLog
兩個類,每個類各自處理一種單一職責。