實(shí)踐之路《單一職責(zé)-七大基本原則》

單一職責(zé)原則(Single Responsibility Principle)

定義:不要存在多于一個(gè)導(dǎo)致類變更的原因

理解起來就是一個(gè)類最好只有單一的職責(zé),只專注于一件事,不要讓它成為一個(gè)“上帝類”,上帝類一般指的是維護(hù)了太多功能的類。比如,你可以想象一下,把spring的所有功能封裝到一個(gè)類里,這就是嚴(yán)重違背單一職責(zé)。
問題由來:類T負(fù)責(zé)兩個(gè)不同的職責(zé):職責(zé)P1,職責(zé)P2。當(dāng)由于職責(zé)P1需求發(fā)生改變而需要修改類T時(shí),有可能會(huì)導(dǎo)致原本運(yùn)行正常的職責(zé)P2功能發(fā)生故障。
解決方案:遵循單一職責(zé)原則。分別建立兩個(gè)類T1、T2,使T1完成職責(zé)P1功能,T2完成職責(zé)P2功能。這樣,當(dāng)修改類T1時(shí),不會(huì)使職責(zé)P2發(fā)生故障風(fēng)險(xiǎn);同理,當(dāng)修改T2時(shí),也不會(huì)使職責(zé)P1發(fā)生故障風(fēng)險(xiǎn)。
需要說明的一點(diǎn)是單一職責(zé)原則不只是面向?qū)ο缶幊趟枷胨赜械?,只要是模塊化的程序設(shè)計(jì),都適用單一職責(zé)原則。
舉個(gè)實(shí)際開發(fā)中的例子,我有一個(gè)類,里面有兩個(gè)屬性,還有兩個(gè)方法,方法分別為刪除和修改方法,這時(shí)候就涉及到職責(zé)劃分的問題了,你可以把他劃分為兩部分,這個(gè)類只有一個(gè)職責(zé)就是存儲(chǔ)和讀取信息,然后把兩個(gè)方法拿出來當(dāng)做業(yè)務(wù)部分,這樣就分為了兩個(gè)類,分屬不同職責(zé)且單一。
單一職責(zé)原則提出了一個(gè)編寫程序的標(biāo)準(zhǔn),用職責(zé)和變化原因來衡量接口或類設(shè)計(jì)的是否優(yōu)良,但是職責(zé)和變化原因都是不可度量的,因項(xiàng)目而異,因環(huán)境而異。
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 前言 關(guān)于設(shè)計(jì)模式六大設(shè)計(jì)原則的資料網(wǎng)上很多,但感覺很多地方解釋地都太過于籠統(tǒng)化,特此再總結(jié)一波。 優(yōu)化第一步-單...
    ghroost閱讀 1,260評(píng)論 0 5
  • 設(shè)計(jì)模式六大原則 設(shè)計(jì)模式六大原則(1):?jiǎn)我宦氊?zé)原則 定義:不要存在多于一個(gè)導(dǎo)致類變更的原因。通俗的說,即一個(gè)類...
    viva158閱讀 826評(píng)論 0 1
  • 轉(zhuǎn)載標(biāo)注聲明:http://www.uml.org.cn/sjms/201211023.asp 目錄:[設(shè)計(jì)模式六...
    Bloo_m閱讀 799評(píng)論 0 7
  • 目錄: 設(shè)計(jì)模式六大原則(1):?jiǎn)我宦氊?zé)原則 設(shè)計(jì)模式六大原則(2):里氏替換原則 設(shè)計(jì)模式六大原則(3):依賴倒...
    加油小杜閱讀 800評(píng)論 0 1
  • 單一職責(zé)原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,867評(píng)論 2 5

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