SOLID之SRP

單一職責(zé)原則 SRP,single responsibility principle

SRP是所有原則中最簡單的之一,也是最難正確運(yùn)用的之一,也是我們?nèi)粘V凶畛S玫囊粋€(gè)

不管是編碼,重構(gòu),甚至當(dāng)下流行的微服務(wù)中

在很多團(tuán)隊(duì)的規(guī)范中,都會(huì)聽到一條編碼規(guī)范:一個(gè)方法不要超過x行代碼

作為一群自命不凡的程序員,為什么在規(guī)范中卻有如此一條格調(diào)不對(duì)稱規(guī)范

主要問題就在于思維對(duì)SRP的缺失


微服務(wù)這個(gè)術(shù)語的一個(gè)問題是會(huì)將你的關(guān)注點(diǎn)錯(cuò)誤地聚集在“微”上。它暗示服務(wù)應(yīng)該非常小。很多團(tuán)隊(duì)在實(shí)施時(shí),也是往小了去考慮,偏移了核心目標(biāo)

微服務(wù)的目標(biāo)是將精心設(shè)計(jì)的服務(wù)定義為能夠由小團(tuán)隊(duì)開發(fā)的服務(wù),并且交付時(shí)間最短,與其它團(tuán)隊(duì)協(xié)作最小。

理論上,團(tuán)隊(duì)可能只負(fù)責(zé)單一服務(wù),因此服務(wù)絕對(duì)不是微小的

單一

從個(gè)人理解可以分為狹義與廣義

狹義:

狹義只是從面向底層實(shí)現(xiàn)細(xì)節(jié)的設(shè)計(jì)原則

一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因

在日常中,在編寫方法或者重構(gòu)方法,也是以這個(gè)為原則,即確保一個(gè)函數(shù)只完成一個(gè)功能。

在將大方法重構(gòu)成小方法時(shí)經(jīng)常會(huì)用到這個(gè)原則

廣義:

相對(duì)狹義,適用的范圍相對(duì)大些,不再是一個(gè)類,一個(gè)方法,亦或是一個(gè)原因

任何一個(gè)軟件模塊都應(yīng)該只對(duì)某一類行為者負(fù)責(zé)

“軟件模塊”不再只是一個(gè)類,可以是一組緊密相關(guān)的函數(shù)和數(shù)據(jù)結(jié)構(gòu),甚至一個(gè)獨(dú)立應(yīng)用服務(wù)

職責(zé)

什么是職責(zé)?如果一個(gè)類承擔(dān)多于一個(gè)職責(zé),那么引起它變化的原因就會(huì)有多個(gè)

在SRP中,職責(zé)定義為“變化的原因”,如果你能夠想到多于一個(gè)的動(dòng)機(jī)去改變一個(gè)類,那么這個(gè)類就具有多于一個(gè)的職責(zé)

因此對(duì)于職責(zé)的定義需要結(jié)合具體業(yè)務(wù),有時(shí)從感性上理解一個(gè)類的多個(gè)方法應(yīng)該拆分,但如果應(yīng)用程序的變化方式總是導(dǎo)致這幾個(gè)職責(zé)同時(shí)變化,那么就不需要分離

歡迎關(guān)注【碼農(nóng)戲碼】
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、微服務(wù)介紹 1. 什么是微服務(wù) 在介紹微服務(wù)時(shí),首先得先理解什么是微服務(wù),顧名思義,微服務(wù)得從兩個(gè)方面去理解,...
    阿南的生活記錄閱讀 468評(píng)論 0 3
  • 微服務(wù)是什么 微服務(wù)就是一個(gè)獨(dú)立的可部署的占有自己進(jìn)程的一個(gè)實(shí)體, 我們一般把這個(gè)實(shí)體稱之為服務(wù)。 微服務(wù)的核心思...
    臺(tái)城閱讀 1,998評(píng)論 0 2
  • 設(shè)計(jì)模式之六大原則(轉(zhuǎn)載) 設(shè)計(jì)模式之六大原則(轉(zhuǎn)載) 關(guān)于設(shè)計(jì)模式的六大設(shè)計(jì)原則的資料網(wǎng)上很多,但是很多地方解釋...
    天涯人1196閱讀 386評(píng)論 0 0
  • 垃圾簡書,垃圾CEO,垃圾某豚,從此絕不再用。 本文是翻譯 https://martinfowler.com/ar...
    linkinparkzlz閱讀 4,217評(píng)論 0 1
  • 摘要:本文中,我們將進(jìn)一步理解微服務(wù)架構(gòu)的核心要點(diǎn)和實(shí)現(xiàn)原理,為讀者的實(shí)踐提供微服務(wù)的設(shè)計(jì)模式,以期讓微服務(wù)在讀者...
    Java架構(gòu)師Carl閱讀 6,392評(píng)論 0 20

友情鏈接更多精彩內(nèi)容