設計原則之單一職責原則

2021-10-23 11:54:04 字數 1178 閱讀 7676

什麼是單一職責原則

定義:有且僅有乙個使介面或類產生變化的原因。

也就是說我們使類或介面變化,只能有乙個理由。但是在實際開發的過程中,我們很容易做到介面單一職責,很難做到類單一職責。

例如:我們以查詢資料,處理資料,返回資料為例。

如果我們這樣設計乙個介面:

public

inte***ce

iuserbo

public

class

userbo

你考慮它的實現類,要做三件事情,分別是查詢,處理,返回資料,這樣一來,當查詢的資料改變時,整個類的另外兩個方法也可能會需要改變,

那麼這就不符合單一職責原則了嗎。當然這裡所說的單一職責,也應該用於方法,

例如:某個方法就是用於查詢資料的,另外乙個方法就只用於處理得到的資料。

但是我們把這個介面設計成符合單一職責原則時:

public

inte***ce

userdao

public

inte***ce

userservice

public

inte***ce

usercontroller

這不就是我們熟悉的三層架構嗎? 我這裡所講的是在mvc模式的意義上,dao層可以說它的職責就是與資料庫互動,service層的職責就是

處理dao層返回的資料,而controller層的職責就是與頁面互動。

當然有的人會反駁我,說controller層的職責是接收請求,和返回響應 ,這也就是我們在專案中有可能違背單一職責原則的原因有二:

1.如果完全遵循單一職責原則,那麼我們的系統類的複雜度會變高。

2.每個人對於職責劃分的理解不同,a可以把與資料庫互動認為是一種職責,但是b可以認為在與資料庫互動的過程中,查詢是一種職責,修改是另一種職責,新增又是一種職責…

當然,單一職責原則還是有優點的:

1.類的複雜性降低,實現什麼職責都有明確的定義

2.可讀性提高

3.可維護性提高

4.變更引起的風險降低

所以對於單一職責原則,設計模式之禪的作者就建議了:在設計時,介面一定要做到單一職責原則,而類的設計盡量做到單一職責原則。

設計原則之單一職責原則

無論是什麼設計原則,全部都是圍繞 專案的生命週期 和 高內聚,低耦合 這兩個關鍵字。定義 單一職責原則 srp single responsibility principle 又稱單一功能原則,它規定了乙個類應該只有乙個發生變化的原因,即乙個類只負責一項職責。字面上很好理解,但是如果做起來卻很難做到...

設計原則 單一職責原則

定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t...

設計原則 單一職責原則

1 原則的定義 2 原則設計的初衷 3 能解決哪些問題 4 有哪些場景可以使用 單一職責原則,英文名single responsibility principle,縮寫為srp。乙個類或者模組只負責完成乙個職責 或者功能 也就是說,不要設計大而全的類,要設計粒度小,功能單一的類。換個角度來講就是,乙...