【一篇就夠】【設(shè)計模式六大原則】


單一職責(zé)

定義

應(yīng)該有且僅有一個原因引起類的變更。

詳細(xì)描述

接口的職責(zé)在設(shè)計時應(yīng)該做到單一,降低類的復(fù)雜性若皱,實現(xiàn)的職責(zé)都有明確的定義魂拦,提高了可讀性、可維護(hù)性波桩、可擴(kuò)展性;

變更引起的風(fēng)險降低,如果接口隔離性做的好偏灿,一個接口的修改只對相應(yīng)實現(xiàn)類有影響,對其它接口沒有影響钝的,降低了耦合性翁垂。

(單一職責(zé)提出了一個編寫程序的標(biāo)準(zhǔn)铆遭,用“職責(zé)”或“變化原因”來衡量接口或類設(shè)計的是否優(yōu)良,但是“職責(zé)”或“變化原因”都是不可度量的沿猜,因項目而異枚荣,因環(huán)境而異)

里氏替換原則(Liskov Substitution Principle LSP)

定義

是面向?qū)ο笤O(shè)計的基本原則之一,只要父類能出現(xiàn)的地方子類就能出現(xiàn)啼肩,而且替換為子類也不會產(chǎn)生任何錯誤或異常橄妆。

詳細(xì)描述

LSP原則是繼承復(fù)用的基石,只有當(dāng)子類能夠替換掉父類祈坠,軟件單位功能不受影響時害碾,父類才能被真正復(fù)用。LSP原則是對開閉原則的補(bǔ)充赦拘,實現(xiàn)開閉原則的關(guān)鍵步驟就是抽象化慌随,而父類與子類的繼承關(guān)系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范躺同。

子類必須完全實現(xiàn)父類的方法

子類可以有自己的個性

子類可以有自己的個性

子類可以有自己的個性

優(yōu)點(diǎn)

代碼共享阁猜,減少創(chuàng)建類的工作量

提高代碼的重用性

子類可以形似父類,但又異于父類

提高代碼的可擴(kuò)展性

提高產(chǎn)品或項目的開放性

缺點(diǎn)

繼承是侵入性的蹋艺,只要繼承就必須擁有父類的所有屬性和方法

降低代碼的靈活性

增強(qiáng)了耦合性剃袍,父類的常量、變量捎谨、方法被修改時民效,要考慮到子類的修改,在缺乏規(guī)范的環(huán)境下涛救,可能有許多代碼需要重構(gòu)研铆。

依賴倒置原則(Dependence Inversion Principle, DIP)

定義

高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象州叠,抽象不應(yīng)該依賴細(xì)節(jié)棵红,細(xì)節(jié)應(yīng)該依賴抽象

面向接口編程(Object-Oriented Design, OOD)

優(yōu)點(diǎn)

依賴倒置原則可以降低類間的耦合性;

依賴倒置原則可以提高系統(tǒng)的穩(wěn)定性咧栗;

依賴倒置原則可以減少并行開發(fā)引起的風(fēng)險逆甜;

依賴倒置原則可以提高代碼的可讀性和可維護(hù)性;

接口隔離原則

定義

使用多個專門的接口致板,而不使用單一的總接口交煞,即客戶端不應(yīng)該依賴那些它不需要的接口。

詳細(xì)描述

接口僅僅提供客戶端需要的行為斟或,客戶端不需要的行為則隱藏起來素征,應(yīng)當(dāng)為客戶端提供盡可能小的接口,而不要提供大的總接口

迪米特法則(Low of Demeter ,LoD)又稱最少知識原則

定義

一個軟件實體應(yīng)當(dāng)盡可能少的與其他實體發(fā)生相互作用。

詳細(xì)描述

應(yīng)該盡量減少對象之間的交互御毅,如果兩個對象不必直接通信根欧,那么這兩個對象就不應(yīng)該發(fā)生任何直接的相互作用,如果其中一個對象需要調(diào)用另外一個對象的某個方法時端蛆,可以通過第三者轉(zhuǎn)發(fā)這個調(diào)用凤粗。就是通過引入一個合理的第三者來降低先有對象之間的耦合度。

開閉原則

定義

對擴(kuò)展開放今豆,對修改關(guān)閉

詳細(xì)描述

開閉原則(Open Closed Principle)是編程中最基礎(chǔ)嫌拣、最重要設(shè)計原則

一個軟件實體如類,模塊和函數(shù)應(yīng)該對擴(kuò)展開放(對提供方)呆躲,對修改關(guān)閉(對使用方)异逐。用抽象構(gòu)建框架,用實現(xiàn)擴(kuò)展細(xì)節(jié)插掂。

一個軟件實體如類灰瞻,模塊和函數(shù)應(yīng)該對擴(kuò)展開放(對提供方),對修改關(guān)閉(對使用方)燥筷。用抽象構(gòu)建框架,用實現(xiàn)擴(kuò)展細(xì)節(jié)院崇。

編程中遵循其它原則肆氓,以及使用設(shè)計模式的目的就是遵循開閉原則。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末底瓣,一起剝皮案震驚了整個濱河市谢揪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捐凭,老刑警劉巖拨扶,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茁肠,居然都是意外死亡患民,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門垦梆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匹颤,“玉大人,你說我怎么就攤上這事托猩∮”停” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵京腥,是天一觀的道長赦肃。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么他宛? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任船侧,我火速辦了婚禮,結(jié)果婚禮上堕汞,老公的妹妹穿的比我還像新娘勺爱。我一直安慰自己,他們只是感情好讯检,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布琐鲁。 她就那樣靜靜地躺著,像睡著了一般人灼。 火紅的嫁衣襯著肌膚如雪围段。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天投放,我揣著相機(jī)與錄音奈泪,去河邊找鬼。 笑死灸芳,一個胖子當(dāng)著我的面吹牛涝桅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烙样,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼冯遂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谒获?” 一聲冷哼從身側(cè)響起蛤肌,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎批狱,沒想到半個月后裸准,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赔硫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年炒俱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爪膊。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡向胡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惊完,到底是詐尸還是另有隱情僵芹,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布小槐,位于F島的核電站拇派,受9級特大地震影響荷辕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜件豌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一疮方、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茧彤,春花似錦骡显、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至珠洗,卻和暖如春溜歪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背许蓖。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工蝴猪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膊爪。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓自阱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親米酬。 傳聞我的和親對象是個殘疾皇子沛豌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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