單一職責(zé)原則是最簡(jiǎn)單的面向?qū)ο笤O(shè)計(jì)原則,它用于控制類(lèi)的粒度大小。單一職責(zé)原則定義如下:
單一職責(zé)原則(Single Responsibility Principle, SRP):一個(gè)類(lèi)只負(fù)責(zé)一個(gè)功能領(lǐng)域中的相應(yīng)職責(zé),或者可以定義為:就一個(gè)類(lèi)而言,應(yīng)該只有一個(gè)引起它變化的原因。
單一職責(zé)原則告訴我們:一個(gè)類(lèi)不能太“累”!在軟件系統(tǒng)中,一個(gè)類(lèi)(大到模塊,小到方法)承擔(dān)的職責(zé)越多,它被復(fù)用的可能性就越小,而且一個(gè)類(lèi)承擔(dān)的職責(zé)過(guò)多,就相當(dāng)于將這些職責(zé)耦合在一起,當(dāng)其中一個(gè)職責(zé)變化時(shí),可能會(huì)影響其他職責(zé)的運(yùn)作,因此要將這些職責(zé)進(jìn)行分離,將不同的職責(zé)封裝在不同的類(lèi)中,即將不同的變化原因封裝在不同的類(lèi)中,如果多個(gè)職責(zé)總是同時(shí)發(fā)生改變則可將它們封裝在同一類(lèi)中。
單一職責(zé)原則是實(shí)現(xiàn)高內(nèi)聚、低耦合的指導(dǎo)方針,它是最簡(jiǎn)單但又最難運(yùn)用的原則,需要設(shè)計(jì)人員發(fā)現(xiàn)類(lèi)的不同職責(zé)并將其分離,而發(fā)現(xiàn)類(lèi)的多重職責(zé)需要設(shè)計(jì)人員具有較強(qiáng)的分析設(shè)計(jì)能力和相關(guān)實(shí)踐經(jīng)驗(yàn)。
難點(diǎn):
職責(zé)的劃分。
在不同情景和生產(chǎn)環(huán)境下我們對(duì)職責(zé)的細(xì)化是不同的(職責(zé)單一的相對(duì)性)
單一職責(zé)原則提出的是一個(gè)評(píng)價(jià)接口是否優(yōu)良的標(biāo)準(zhǔn),但是職責(zé)和變化原因是不可度量的,因項(xiàng)目而異,因環(huán)境而異(不可度量性)
優(yōu)點(diǎn):
可以降低類(lèi)的復(fù)雜度,一個(gè)類(lèi)只負(fù)責(zé)一項(xiàng)職責(zé),其邏輯肯定要比負(fù)責(zé)多項(xiàng)職責(zé)簡(jiǎn)單的多;
提高類(lèi)的可讀性,提高系統(tǒng)的可維護(hù)性;
變更引起的風(fēng)險(xiǎn)降低,變更是必然的,如果單一職責(zé)原則遵守的好,當(dāng)修改一個(gè)功能時(shí),可以顯著降低對(duì)其他功能的影響。
————————————————
原文鏈接:https://blog.csdn.net/zhstrd/article/details/87888955
原文鏈接:https://blog.csdn.net/lovelion/article/details/7536542