那些你要知道的設(shè)計原則之-單一職責(zé)

1.定義

一個類只做一件事搪柑,只有一個原因引起變化

2.作用

  • 降低類的復(fù)雜度
  • 降低變更帶來的風(fēng)險
  • 提高系統(tǒng)維護(hù)性

3.應(yīng)用

下面是一個畫圖接口

public interface Drawing {
    
    //畫正方形
    public void DrawSquare();
    
    //畫三角形
    public void DrawTriangle();
    
    //畫一條線
    public void DrawLine();
    
    //畫一個曲線
    public void DrawCurve();
}

這個接口的設(shè)計有問題嗎?我說是沒有問題的牌废。單一職責(zé)原則要求一個接口或類只有一個原因引起變化酿矢,一個接口或類只有一個職責(zé)樱衷,只負(fù)責(zé)一件事情创译。畫圖接口也確實是按照單一職責(zé)去設(shè)計只負(fù)責(zé)畫,里面的方法也都是draw的相關(guān)方法县爬,如果在需求不會變化或者變化的可能性比較小煌集,那么這種設(shè)計就是合理的。但實際情況我們知道捌省,隨著業(yè)務(wù)的不斷增加苫纤,產(chǎn)品的腦洞越來越大下次需要增加,圓形,橢圓形卷拘,二階三階貝塞爾曲線等等喊废,這個時候我們就需要改,有時候可能還會牽扯到連帶關(guān)系也要發(fā)現(xiàn)改動栗弟。所以更好的方式是按照draw的類型進(jìn)行拆分污筷。拆分成DrawFigure專門用來處理畫圖形,DrawPoints專門用來處理畫線條

public interface DrawFigure {
    
    //畫正方形
    public void DrawSquare();
        
    //畫三角形
    public void DrawTriangle();
}

public interface DrawPoints {
    
    //畫一條線
    public void DrawLine();
    
    //畫一個曲線
    public void DrawCurve();
}

這樣做更符合了單一職責(zé)原則乍赫,假如下次增加了其他圖形的功能瓣蛀,經(jīng)過我們的拆分接口之后我們只需要在處理圖像接口中新增加就行,比起最開始來說降低了變更的風(fēng)險和復(fù)雜度雷厂,不用去修改所有實現(xiàn)了了畫圖接口Drawing的實例

4.總結(jié)

不管是接口或者是類還是方法都建議遵循單一職責(zé)原則惋增,但是具體要細(xì)化到哪一步,還是要取決于需求和業(yè)務(wù)的復(fù)雜度改鲫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诈皿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子像棘,更是在濱河造成了極大的恐慌稽亏,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缕题,死亡現(xiàn)場離奇詭異截歉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烟零,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門瘪松,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瓶摆,你說我怎么就攤上這事凉逛⌒院辏” “怎么了群井?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毫胜。 經(jīng)常有香客問我书斜,道長,這世上最難降的妖魔是什么酵使? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任荐吉,我火速辦了婚禮,結(jié)果婚禮上口渔,老公的妹妹穿的比我還像新娘样屠。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布痪欲。 她就那樣靜靜地躺著悦穿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪业踢。 梳的紋絲不亂的頭發(fā)上栗柒,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機(jī)與錄音知举,去河邊找鬼瞬沦。 笑死,一個胖子當(dāng)著我的面吹牛雇锡,可吹牛的內(nèi)容都是我干的逛钻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼遮糖,長吁一口氣:“原來是場噩夢啊……” “哼绣的!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起欲账,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤屡江,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赛不,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惩嘉,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年踢故,在試婚紗的時候發(fā)現(xiàn)自己被綠了文黎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡殿较,死狀恐怖耸峭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情淋纲,我是刑警寧澤劳闹,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站洽瞬,受9級特大地震影響本涕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伙窃,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一菩颖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧为障,春花似錦晦闰、人聲如沸放祟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舞竿。三九已至,卻和暖如春窿冯,著一層夾襖步出監(jiān)牢的瞬間骗奖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工醒串, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留执桌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓芜赌,卻偏偏與公主長得像仰挣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缠沈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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

  • 程序設(shè)計的6大原則: 單一職責(zé)原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則開閉原則 從根本學(xué)好膘壶,理解為什么要...
    silencefun閱讀 2,408評論 1 4
  • 目錄: 設(shè)計模式六大原則(1):單一職責(zé)原則 設(shè)計模式六大原則(2):里氏替換原則 設(shè)計模式六大原則(3):依賴倒...
    加油小杜閱讀 728評論 0 1
  • 設(shè)計模式六大原則 設(shè)計模式六大原則(1):單一職責(zé)原則 定義:不要存在多于一個導(dǎo)致類變更的原因。通俗的說洲愤,即一個類...
    viva158閱讀 768評論 0 1
  • 單一職責(zé)原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,765評論 2 5
  • 同是重疾險柬赐,大家保額為何不同亡问? 我的重疾險,保額在10年后還夠嗎肛宋? 最近被不少朋友問到重疾險保額的問題...
    張秀麗閱讀 708評論 1 0