六大設(shè)計(jì)原則之一:單一職責(zé)原則

定義

單一職責(zé)原則(Single Responsibility Principle熙卡,簡稱SRP),顧名思義就是只有一個職責(zé)的原則文捶。這樣定義的話的確比較簡單直白篇恒,但是“職責(zé)”不是一個能夠明確界定的東西,容易引起爭議葫松。比如說:“我的職責(zé)是開發(fā)軟件瓦糕。”這沒有問題腋么,但是粒度非常粗咕娄,要知道開發(fā)軟件可以細(xì)分為構(gòu)架搭建、功能實(shí)現(xiàn)珊擂、調(diào)試等等部分圣勒,而且這些部分還可以繼續(xù)細(xì)分呢。所以上面的定義是有問題的摧扇。我們來看看單一職責(zé)原則的原始定義:

There should never be more than one reason for a class to chage.(有且只有一個原因引起一個類的變化圣贸。)

它回答了兩個問題:

  1. 單一職責(zé)是什么?單一職責(zé)不是“只有一個職責(zé)”扛稽,而是“有且只有一個原因引起變化”吁峻;
  2. 誰需要單一職責(zé)?定義中只說了類需要單一職責(zé)庇绽,但在實(shí)踐中锡搜,接口和方法也需要單一職責(zé)。

也就是說瞧掺,我們在設(shè)計(jì)一個類耕餐、接口或者方法的時候,需要保證有且只有一個原因引起它的變化辟狈。

單一職責(zé)原則降低了類的復(fù)雜性肠缔,讓每個類分工明確,能有效提高代碼的可讀性和可維護(hù)性哼转。更重要的是明未,單一職責(zé)原則能幫你理清思路:當(dāng)你面對一個復(fù)雜的問題無從下手時,嘗試從一個一個負(fù)責(zé)具體和單一功能的類做起吧壹蔓!

爭議性

單一職責(zé)原則是非常簡單的一個原則趟妥,如果你現(xiàn)在就開始在項(xiàng)目中嚴(yán)格遵守這個原則,保證每個類都是“有且只有一個原因引起變化”佣蓉,那么你很快就會發(fā)現(xiàn)你的類的數(shù)量大增披摄。這不難理解亲雪,因?yàn)橐郧澳憧赡軙懸粋€像瑞士軍刀一樣的類,但是現(xiàn)在螺絲刀是一個類疚膊,剪刀是一個類义辕,指甲鉗是一個類...而且你往往還要把它們組合起來使用,最終結(jié)果是增加了復(fù)雜性寓盗。

單一職責(zé)原則的本意非常好灌砖,它讓每個類都只做一件事,減低了類的復(fù)雜性傀蚌。但是如果嚴(yán)格遵守單一職責(zé)原則基显,又會導(dǎo)致類的數(shù)目大增偎血,反而增加了整體的復(fù)雜性答朋。這就是單一職責(zé)原則的爭議性。所以在實(shí)踐中陵究,你很少會看到嚴(yán)格遵守單一職責(zé)原則的代碼销部。

最佳實(shí)踐

對于類來說摸航,如果實(shí)在沒必要做到“有且只有一個原因引起變化”,那你至少要保證它的職責(zé)只有一個舅桩,盡管你這個職責(zé)的粒度可能有點(diǎn)大酱虎。對于接口和方法來說,必須要做到“有且只有一個原因引起變化”擂涛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末读串,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子撒妈,更是在濱河造成了極大的恐慌恢暖,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狰右,死亡現(xiàn)場離奇詭異杰捂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)棋蚌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門嫁佳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谷暮,你說我怎么就攤上這事蒿往。” “怎么了湿弦?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵瓤漏,是天一觀的道長。 經(jīng)常有香客問我,道長蔬充,這世上最難降的妖魔是什么俯在? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮娃惯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肥败。我一直安慰自己趾浅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布馒稍。 她就那樣靜靜地躺著皿哨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纽谒。 梳的紋絲不亂的頭發(fā)上证膨,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音鼓黔,去河邊找鬼央勒。 笑死,一個胖子當(dāng)著我的面吹牛澳化,可吹牛的內(nèi)容都是我干的崔步。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼缎谷,長吁一口氣:“原來是場噩夢啊……” “哼井濒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起列林,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤瑞你,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后希痴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體者甲,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年润梯,在試婚紗的時候發(fā)現(xiàn)自己被綠了过牙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡纺铭,死狀恐怖寇钉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舶赔,我是刑警寧澤扫倡,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響撵溃,放射性物質(zhì)發(fā)生泄漏疚鲤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一缘挑、第九天 我趴在偏房一處隱蔽的房頂上張望集歇。 院中可真熱鬧,春花似錦语淘、人聲如沸诲宇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姑蓝。三九已至,卻和暖如春吕粗,著一層夾襖步出監(jiān)牢的瞬間纺荧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工颅筋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宙暇,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓议泵,卻偏偏與公主長得像客给,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肢簿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 單一職責(zé)原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,761評論 2 5
  • 前言 關(guān)于設(shè)計(jì)模式六大設(shè)計(jì)原則的資料網(wǎng)上很多靶剑,但感覺很多地方解釋地都太過于籠統(tǒng)化,特此再總結(jié)一波池充。 優(yōu)化第一步-單...
    ghroost閱讀 1,096評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理桩引,服務(wù)發(fā)現(xiàn),斷路器收夸,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 這是一個測試
    馬穆魯克閱讀 98評論 0 0
  • 感賞早上5:40叫想兒起床坑匠,孩子聽到就起身了,外面一片漆黑卧惜,孩子出門上學(xué)去了厘灼。 感賞想兒從學(xué)校打來電話告訴我中午不...
    清晨劉丹閱讀 97評論 0 3