面向?qū)ο缶幊痰幕驹瓌t原則學(xué)習(xí)

面向?qū)ο笾杏辛笤瓌t,分別是:

  • 單一職責(zé)原則(SRP邦鲫,Single Responsibility Principle)
  • 開放封閉原則(OCP禀横,Open Closed Principle)
  • 里氏替換原則(LSP)
  • 接口隔離原則(ISP,Interface Segregation Principle)
  • 依賴倒置原則(DIP,Dependence Inversion Principle)
  • 迪米特原則(LOD)

每一個(gè)原則都有它存在的道理虑瀑,理解透徹了這些原則會(huì)大有益處逛拱。

單一職責(zé)原則

概念

就是讓類職責(zé)盡量明確敌厘,最好每個(gè)類只有一種職責(zé),這也是理想狀態(tài)朽合。經(jīng)驗(yàn)告訴我俱两,只要類職責(zé)能表達(dá)清楚就是一個(gè)好的類劃分。

重要性

理解了單一職責(zé)曹步,可以幫助我們合理的劃分結(jié)構(gòu)锋华,理解問題,并解決問題箭窜。更重要的是職責(zé)清晰了毯焕,方便后續(xù)代碼維護(hù),就不會(huì)輕易就改錯(cuò)了磺樱。

怎么做纳猫?

  • 對(duì)象職責(zé)不清,就有可能造成邏輯錯(cuò)綜復(fù)雜竹捉,進(jìn)而表現(xiàn)為類代碼臃腫芜辕,這些類就需要進(jìn)行拆分。
  • 檢查類的功能是否獨(dú)立块差,特別是一些基礎(chǔ)類庫侵续,應(yīng)該保證都是單一職責(zé)的。
  • 代碼耦合度太高憨闰,也是重點(diǎn)關(guān)注的對(duì)象状蜗。
  • 根據(jù)實(shí)際開發(fā)經(jīng)驗(yàn)而定。

開放封閉原則

概念

該原則有兩個(gè)重要的特性:
1>面向擴(kuò)展開放鹉动。

也就是說模塊的行為是能夠被擴(kuò)展的轧坎。當(dāng)應(yīng)用程序的需求變化時(shí),我們可以使模塊表現(xiàn)出全新的或與以往不同的行為泽示,以滿足新的需求缸血。

2>面向修改封閉蜜氨。

模塊的源代碼是不能被侵犯的,任何人都不允許修改已有源代碼捎泻。

重要性

提高代碼的可重用和可維護(hù)飒炎。

怎么做?

對(duì)擴(kuò)展開放笆豁,對(duì)修改關(guān)閉郎汪,其含義是說一個(gè)軟件實(shí)體應(yīng)該通過擴(kuò)展來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來實(shí)現(xiàn)變化渔呵。

參考

1.設(shè)計(jì)模式六大原則例子(六)-- 開放封閉原則(OCP)例子
2.開放封閉原則(Open Closed Principle)

里氏替換原則

概念

所有引用基類的地方必須能透明地使用其子類的對(duì)象怒竿。主張使用“抽象(Abstraction)”和“多態(tài)(Polymorphism)”將設(shè)計(jì)中的靜態(tài)結(jié)構(gòu)改為動(dòng)態(tài)結(jié)構(gòu)砍鸠,維持設(shè)計(jì)的封閉性扩氢。

重要性

可將講臺(tái)的代碼變?yōu)閯?dòng)態(tài)代碼。使用上更加靈活爷辱,同時(shí)也是為了更好的擴(kuò)展录豺。

怎么做?

  • 子類可以實(shí)現(xiàn)父類的抽象方法饭弓,但是不能覆蓋父類的非抽象方法双饥。
  • 子類中可以增加自己特有的方法。
  • 當(dāng)子類覆蓋或?qū)崿F(xiàn)父類的方法時(shí)弟断,方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松咏花。
  • 當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法時(shí),方法的后置條件(即方法的返回值)要比父類更嚴(yán)格阀趴。

參考

里氏替換原則的理解
六大設(shè)計(jì)原則之里氏替換原則

接口隔離原則

概念

接口隔離有兩種定義:
1.客戶端不應(yīng)該依賴它不需要的接口昏翰;
2.一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小的接口上。

重要性

可降低代碼的耦合度刘急。

怎么做棚菊?

建立單一接口,不要建立臃腫龐大的接口叔汁。再通俗的說就是接口盡量細(xì)化统求,同時(shí)接口中的方法盡量少。

參考

六大設(shè)計(jì)原則之接口隔離原則
面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則(ISP)

依賴倒置原則

概念

  • 高層模塊不應(yīng)該依賴低層模塊据块,兩者都應(yīng)該依賴抽象
  • 抽象不應(yīng)該依賴細(xì)節(jié)
  • 細(xì)節(jié)應(yīng)該依賴抽象

通俗的講码邻,就是抽象類不依賴具體實(shí)現(xiàn),但是實(shí)現(xiàn)類必須依賴抽象類另假。

重要性

采用依賴倒置原則可以減少類間的耦合性冒滩,提高系統(tǒng)的穩(wěn)定,降低并行開發(fā)引起的風(fēng)險(xiǎn)浪谴,提高代碼的可讀性和可維護(hù)性开睡。

參考

1.六大設(shè)計(jì)原則之依賴倒置原則
2.設(shè)計(jì)模式六大原則例子(四)-- 依賴倒置原則(DIP)例子

迪米特原則

概念

一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解因苹。換言之,一個(gè)對(duì)象對(duì)外暴露的方法越少越好篇恒。

重要性

還是為了降低耦合度扶檐。

怎么做?

1胁艰、只與朋友類交流

出現(xiàn)在成員變量款筑,方法的輸入輸出參數(shù)中的類,稱為朋友類

2腾么、朋友類間也是要有距離

對(duì)象對(duì)外暴露的方法盡可能少

參考

六大設(shè)計(jì)原則之迪米特原則
迪米特法則詳解--七大面向?qū)ο笤O(shè)計(jì)原則(6)

總結(jié)

這六大原則都是為了降低代碼的耦合度奈梳,提高代碼的可維護(hù)性,可重用性和可擴(kuò)展性解虱,要合理使用還需要細(xì)細(xì)揣摩攘须。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市殴泰,隨后出現(xiàn)的幾起案子于宙,更是在濱河造成了極大的恐慌,老刑警劉巖悍汛,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捞魁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡离咐,警方通過查閱死者的電腦和手機(jī)谱俭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宵蛀,“玉大人昆著,你說我怎么就攤上這事√锹瘢” “怎么了宣吱?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瞳别。 經(jīng)常有香客問我征候,道長(zhǎng),這世上最難降的妖魔是什么祟敛? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任疤坝,我火速辦了婚禮,結(jié)果婚禮上馆铁,老公的妹妹穿的比我還像新娘跑揉。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布历谍。 她就那樣靜靜地躺著现拒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪望侈。 梳的紋絲不亂的頭發(fā)上印蔬,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音脱衙,去河邊找鬼侥猬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捐韩,可吹牛的內(nèi)容都是我干的退唠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼荤胁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瞧预!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寨蹋,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤松蒜,失蹤者是張志新(化名)和其女友劉穎扔茅,沒想到半個(gè)月后已旧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡召娜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年运褪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玖瘸。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秸讹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雅倒,到底是詐尸還是另有隱情璃诀,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布蔑匣,位于F島的核電站劣欢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏裁良。R本人自食惡果不足惜凿将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望价脾。 院中可真熱鬧,春花似錦、人聲如沸妹孙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽映琳。三九已至,卻和暖如春萨西,著一層夾襖步出監(jiān)牢的瞬間有鹿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工葱跋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留源梭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓荠卷,卻偏偏與公主長(zhǎng)得像烛愧,于是被迫代替她去往敵國和親怜姿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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

  • 單一職責(zé)原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,764評(píng)論 2 5
  • 前言 關(guān)于設(shè)計(jì)模式六大設(shè)計(jì)原則的資料網(wǎng)上很多,但感覺很多地方解釋地都太過于籠統(tǒng)化披诗,特此再總結(jié)一波熟空。 優(yōu)化第一步-單...
    ghroost閱讀 1,104評(píng)論 0 5
  • 前言 設(shè)計(jì)模式六大原則網(wǎng)上資料比較多比較亂息罗,本文將網(wǎng)上的一些好的資料做一下整理,以便隨時(shí)翻閱。友情提示绍刮,設(shè)計(jì)模式雖...
    簡(jiǎn)單的土豆閱讀 1,433評(píng)論 0 10
  • 殷墟,原稱“北蒙”岁歉,是中國商朝后期都城遺址膝蜈,位于河南省安陽市饱搏。盤庚十四年,商朝第二十位君主盤庚遷都于北蒙推沸,改“...
    草莓_a76e閱讀 477評(píng)論 0 0
  • 縱然你平淡無奇 在他眼中 你若風(fēng)華絕代 便得到了全世界 縱然你風(fēng)華絕代 在他眼中 你若平淡無奇 便失去了全世界 平...
    我才是螢火蟲閱讀 201評(píng)論 3 3