設(shè)計模式入門1-- 單一職責原則SRP

寫在前面

一直想抽出一些時間來寫一寫博客护桦,最近準備重拾那份決心巧号,但是仔細思考了下卻不知何入手族奢。思來想去,覺得還是以設(shè)計模式為契機丹鸿,可以很好的對自己的學習進行相應的總結(jié)越走,接下來的文章中,會有參考其他資料的部分靠欢,在此提醒一下廊敌,請各位同學理解。

學習思路

參考哲學三大問題:

  • 我是誰门怪?
  • 我從哪里來骡澈?
  • 我要到哪里去?

當然掷空,我們不會對各個設(shè)計模式問人類的問題肋殴,那么我們也帶著三個問題去學習設(shè)計模式及其他的知識點:

  • 他是誰?
  • 他能干什么坦弟?
  • 他怎么使用护锤?

接下來關(guān)于設(shè)計模式的總結(jié),我將以這樣的思路進行相關(guān)的表述酿傍,除此之外烙懦,也會對一些內(nèi)容進行補充講解,如有疑問及異議赤炒,請于博客下留言氯析,我將與您共同探討,我相信討論會使兩個人都有收益的莺褒!

設(shè)計原則1: 單一職責原則SRP

1掩缓、SRP是誰?

單一職責原則遵岩,簡稱SRP(Single responsibility principle)拾因,從其中文含義,我們就可以理解其所要表達的思想:職責(也就是功能)單一旷余!

備注一下: 其出自 羅伯特·C·馬毒罴恰(Robert C. Martin)的《敏捷軟件開發(fā):原則、模式和實踐》一書正卧。

2蠢熄、SRP能干什么?

SRP所要表述的思想是職責單一炉旷,那么也就是說一個類(或方法)不需要負責太多的職責签孔,其只需要負責自己應該負責的某一職責即可叉讥!舉個通俗的例子,以軟件開發(fā)人員為例:后端軟件開發(fā)人員只需要負責功能需求的開發(fā)即可饥追,其不應該去進行UI和測試的工作(這里在現(xiàn)實中好像不可能)图仓。

從上述例子可以看出:在現(xiàn)實中,很少有完全符合SRP的情況但绕,包括在實際的軟件開發(fā)中救崔,如果某個類僅僅只負責一個職責,那似乎程序代碼是如此的不可想象捏顺。

在SRP的思想基礎(chǔ)上六孵,我們應該要考慮的點不能完全限定于SRP的理論,我們需要注意以下幾點:

  • 1幅骄、在定義對象職責時劫窒,需要充分考慮職責與對象之間的關(guān)系;
  • 2拆座、職責需要很好的體現(xiàn)出對象的行為方式

3主巍、SRP怎么使用?

3.1 不符合SRP的示例

來看下老師Teacher這個類挪凑,現(xiàn)在很多的高校老師一方面教書育人孕索,另一方面處理黨政事務,這其實是兩種行為岖赋,但是在本例中均為教師擔任,這是不符合SRP的原則的瓮孙。

package top.flygrk.ishare.srp;

/**
 * @Classname: Teacher
 * @Description: 不符合SRP原則的示例
 * @Date: 2019/8/1 23:57
 * @Created by: flygrk
 */
public class Teacher {

    public void teachStudent() {
        System.out.println("老師教學生知識~");
    }

    public void handlePartyAffairs() {
        System.out.println("處理黨政事務~");
    }

}

3.2 符合SRP原則的示例

以上述不符合SRP的原則的示例來修改唐断,使其符合SRP原則,其實這很簡單杭抠,在建立類別時脸甘,我們讓教師只負責教書育人這種行為,將處理黨政事務這種行為交由黨員類別即可偏灿。

  • Teacher:
package top.flygrk.ishare.srp.accord;

/**
 * @Classname: Teacher
 * @Description: 符合SRP原則的示例
 * @Date: 2019/8/2 0:08
 * @Created by: flygrk
 */
public class Teacher {

    public void teachStudent() {
        System.out.println("老師教學生知識~");
    }

}
  • PartyMember:
package top.flygrk.ishare.srp.accord;

/**
 * @Classname: PartyMember
 * @Description: 符合SRP的示例
 * @Date: 2019/8/2 0:09
 * @Created by: flygrk
 */
public class PartyMember {

    public void handlePartyAffairs() {
        System.out.println("處理黨政事務~");
    }

}

從上述示例也能看出丹诀,嚴格遵循單一職責原則SRP之后,各個類只負責單一的職責翁垂,類結(jié)構(gòu)清晰铆遭。但是也存在一定的弊端。下面我們來總結(jié)一下其優(yōu)缺點沿猜。

4枚荣、SRP的優(yōu)點

  • 1、類的復雜性降低啼肩,實現(xiàn)什么職責都有清晰明確的含義橄妆;
  • 2衙伶、可讀性提高
  • 3、可維護性提高
  • 4害碾、變更代碼引起的風險降低矢劲。如果接口的單一職責做的好,一個接口的修改只對相應的實現(xiàn)類有影響慌随,對其他接口沒有影響芬沉。

5、SRP的缺點

我們也可以認為其沒有較為明顯的缺點吧儒陨,在實際應用中花嘶,只是比較難以完全遵循SRP。

建議: 開發(fā)中蹦漠,接口開發(fā)必須遵循SRP原則椭员,類開發(fā)盡量遵循SRP原則。

補充點:

關(guān)于SRP的內(nèi)容基本上就總結(jié)完畢了笛园,關(guān)于SRP的知識點隘击,需要在實踐中進行體驗。下面補充一些知識點內(nèi)容:

  • 違反SRP的設(shè)計模式: 外觀模式Facade研铆、代理模式Proxy
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埋同,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子棵红,更是在濱河造成了極大的恐慌凶赁,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逆甜,死亡現(xiàn)場離奇詭異虱肄,居然都是意外死亡,警方通過查閱死者的電腦和手機交煞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門咏窿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人素征,你說我怎么就攤上這事集嵌。” “怎么了御毅?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵根欧,是天一觀的道長涉兽。 經(jīng)常有香客問我峭火,道長砚哗,這世上最難降的妖魔是什么富腊? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任弟孟,我火速辦了婚禮扰付,結(jié)果婚禮上抗碰,老公的妹妹穿的比我還像新娘集灌。我一直安慰自己,他們只是感情好亭罪,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布瘦馍。 她就那樣靜靜地躺著,像睡著了一般应役。 火紅的嫁衣襯著肌膚如雪情组。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天箩祥,我揣著相機與錄音院崇,去河邊找鬼。 笑死袍祖,一個胖子當著我的面吹牛底瓣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蕉陋,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼捐凭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了凳鬓?” 一聲冷哼從身側(cè)響起茁肠,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缩举,沒想到半個月后垦梆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡仅孩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年托猩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠氢。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡站刑,死狀恐怖另伍,靈堂內(nèi)的尸體忽然破棺而出鼻百,到底是詐尸還是另有隱情,我是刑警寧澤摆尝,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布温艇,位于F島的核電站,受9級特大地震影響堕汞,放射性物質(zhì)發(fā)生泄漏勺爱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一讯检、第九天 我趴在偏房一處隱蔽的房頂上張望琐鲁。 院中可真熱鬧卫旱,春花似錦、人聲如沸围段。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈泪。三九已至适贸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涝桅,已是汗流浹背拜姿。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留冯遂,地道東北人蕊肥。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像债蜜,于是被迫代替她去往敵國和親晴埂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

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