單一職責原則

1、概述

1.1 定義

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

不要存在多於一個致使類變動的緣由。java

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

1.2 難點

單一職責,何爲單一職責,職責的劃分?數據庫

關於單一職責,個人理解是一類類似的事物,它們擁有惟一一個共同父集。好比數據庫的增刪改查,咱們能夠將其理解成一種職責,即對數據的基本操做。wordpress

職責的劃分,主要根據不一樣的角度劃分,好比,spa

一、從類組成,劃分爲屬性的操做,和行爲操做兩種。設計

二、從數據庫操做的不一樣做用,劃分爲數據庫的鏈接操做,和增刪改查基本操做。code

2、實例說明

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

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等原則來重構代碼。

參考:

一、單一職責原則

相關文章
相關標籤/搜索