單一職責原則


一、概述

1.1 定義

單一職責原則(Single Responsibility Principle):

不要存在多於一個導致類變更的原因。

核心思想:系統中的每一個對象都應該只有一個單獨的職責,而所有對象所關注的就是自身職責的完成。

1.2 難點

單一職責,何為單一職責,職責的划分?

關於單一職責,我的理解是一類相似的事物,它們擁有唯一一個共同父集。比如數據庫的增刪改查,我們可以將其理解成一種職責,即對數據的基本操作。

職責的划分,主要根據不同的角度划分,比如,

1、從類組成,划分為屬性的操作,和行為操作兩種。

2、從數據庫操作的不同作用,划分為數據庫的連接操作,和增刪改查基本操作。

二、實例說明

在開發項目時,開發人員設計接口的時候會有些問題,比如我們設計用戶接口類,有時為了方便原則,將其屬性操作以及行為操作都封裝在用戶接口類中。

image

上面這個例子,將業務對象和業務邏輯放在一起,使得接口有兩種職責,用戶類的年齡與身高,屬於業務對象,與之相應的方法主要負責用戶的屬性而吃東西是業務邏輯,主要負責用戶的行為。因此業務對象和業務邏輯這兩種原因都可以引起用戶類的變化,發生多於一個導致類變更的原因的情況,違背了單一職責原則。

為了符合單一職責原則,我們將業務對象和業務邏輯這兩種原因分散開來,即可解決。

image

在java中數據庫操作中,根據不同職責划分類接口。

java.sql.Connection:Creates a Statement object for sending SQL statements to the database.

java.sql.Statement:Executes the given SQL statement, which returns a single ResultSet object.

 

單一職責原則,難點在於職責的划分,在實際中,我們盡量根據項目需求的不同角度去划分職責。

在某些時候不能遵守單一職責時,那就放心破壞吧,謹記教條是死的,生活是多變的。

比如:

Break Single Responsibility Principle

注意:

  • 一個合理的類,應該僅有一個引起它變化的原因,即單一職責。
  • 在沒有變化征兆的情況下應用SRP或其他原則是不明智的
  • 在需求實際發生變化時就應該應用SRP等原則來重構代碼。

參考:

1、單一職責原則


免責聲明!

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



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