面象物件設計6大原則之一:單一職責原則
單一職責原則(SRP),The Single Responsibility Principle
定義
一個類的修改只能有一個被修改的原因。
通俗地講,就是一個類只能負責一個職責,修改一個類不能影響到別的功能,也就是說只有一個導致該類被修改的原因。我們寫程式碼的都知道盡量要做到低耦合、高內聚的特性,單一職責原則正是保證了類與類之間的低耦合性。一個類如果承擔過多的職責,就會有很多原因來導致這個類的被修改,就有很大可能性影響到別的功能。
單一職責原則,看起來是一個非常簡單的原則,但真正實踐起來也並非易事,因為職責的聯合在實際當中是經常遇到的事,也不能隨便地去拆分類去適配單一職責模式,所以如何從這些聯合的職責中合理地把職責分隔出來更合適的遵守單一職責原則要好好考慮。
看看下面這這個介面是否符合單一職責原則呢?
public interface UserInterface {
void saveUser(User user);
User getUser(long id);
void updateUserBalance(long id, BigDecimal balance);
BigDecimal getUserBalance(long id);
}
這是一個使用者介面,提供四個方法:儲存使用者、獲取使用者、更新使用者餘額、獲取使用者餘額,很顯然使用者個人資訊與使用者的賬戶餘額是兩回事,這樣設計在一起耦合非常高,不利於擴充套件,也不符合單一職責原則,我們可以把它折分成兩個,一個為使用者資訊介面,一個賬戶介面,如下
public interface UserInterface {
void saveUser(User user);
User getUser(long id);
}
public interface AccountInterface {
void updateUserBalance(long id, BigDecimal balance);
BigDecimal getUserBalance(long id);
}
這樣分開來,是不是就符合了單一職責原則,類的複雜性和耦合性也降低了,即使使用者介面或賬戶介面加減介面也不影響別的介面實現類。
所以,單一職責原則可以總結為以下優勢:
1、低耦合性,影響範圍小。
2、類複雜度降低,職責分明,提高了可讀性。
3、職責單一,利於維護。
相關文章
- 設計模式六大原則(一)----單一職責原則設計模式
- 面象物件設計6大原則之三:里氏替換原則物件
- 面象物件設計6大原則之四:介面隔離原則物件
- 面象物件設計6大原則之五:依賴倒置原則物件
- 面象物件設計6大原則之二:開放封閉原則物件
- 設計模式的七大原則(1) --單一職責原則設計模式
- 設計原則之【單一職責原則】
- 單一職責原則
- 物件導向設計的6大原則物件
- 單一職責原則筆記筆記
- 單一職責原則詳解
- 嘻哈說:設計模式之單一職責原則設計模式
- 《JavaScript設計模式與開發實踐》原則篇(1)—— 單一職責原則JavaScript設計模式
- 設計模式“6”大原則!設計模式
- 物件導向設計的六大原則(SOLID原則)-——里氏替換原則物件Solid
- Java的設計模式和6大原則Java設計模式
- 編碼最佳實踐——單一職責原則
- 被誤解的單一職責原則 - Joe
- 設計模式的七大原則(6) --迪米特法則設計模式
- 單一職責原則:軟體世界中最重要的規則 - DZone
- 理解面對物件的六大原則物件
- [譯] 更可靠的 React 元件:單一職責原則React元件
- 單一職責原則在 iOS 中的應用iOS
- 設計模式六大原則(六)----開閉原則設計模式
- 七大軟體設計原則之一 | 開閉原則
- 設計類六大原則
- 設計模式之7大原則設計模式
- 設計模式-六大原則設計模式
- 軟體設計7大原則
- 設計模式七大原則設計模式
- 設計模式——六大原則設計模式
- 設計模式六大原則設計模式
- 物件導向程式設計(OOP)的七大原則物件程式設計OOP
- 設計模式的七大原則(5) --開閉原則設計模式
- 設計模式六大原則(四)----介面隔離原則設計模式
- 聊一聊設計模式(一)-- 六大原則設計模式
- 設計模式的七大原則(4) --里氏替換原則設計模式
- 設計模式的七大原則(2) --介面隔離原則設計模式