設(shè)計(jì)模式6大原則

設(shè)計(jì)模式簡(jiǎn)介

設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐,通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_(kāi)發(fā)人員所采用层皱。設(shè)計(jì)模式是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的解決方案。這些解決方案是眾多軟件開(kāi)發(fā)人員經(jīng)過(guò)相當(dāng)長(zhǎng)的一段時(shí)間的試驗(yàn)和錯(cuò)誤總結(jié)出來(lái)的洋满。

設(shè)計(jì)模式是一套被反復(fù)使用的孝赫、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的几迄、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)蔚龙。使用設(shè)計(jì)模式是為了重用代碼、讓代碼更容易被他人理解映胁、保證代碼可靠性木羹。 毫無(wú)疑問(wèn),設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的解孙,設(shè)計(jì)模式使代碼編制真正工程化坑填,設(shè)計(jì)模式是軟件工程的基石抛人,如同大廈的一塊塊磚石一樣。項(xiàng)目中合理地運(yùn)用設(shè)計(jì)模式可以完美地解決很多問(wèn)題脐瑰,每種模式在現(xiàn)實(shí)中都有相應(yīng)的原理來(lái)與之對(duì)應(yīng)妖枚,每種模式都描述了一個(gè)在我們周?chē)粩嘀貜?fù)發(fā)生的問(wèn)題,以及該問(wèn)題的核心解決方案蚪黑,這也是設(shè)計(jì)模式能被廣泛應(yīng)用的原因盅惜。

什么是 GOF(四人幫,全拼 Gang of Four)忌穿?

在 1994 年抒寂,由 Erich Gamma、Richard Helm掠剑、Ralph Johnson 和 John Vlissides 四人合著出版了一本名為 Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:設(shè)計(jì)模式 - 可復(fù)用的面向?qū)ο筌浖兀?的書(shū)屈芜,該書(shū)首次提到了軟件開(kāi)發(fā)中設(shè)計(jì)模式的概念。

四位作者合稱 GOF(四人幫朴译,全拼 Gang of Four)井佑。他們所提出的設(shè)計(jì)模式主要是基于以下的面向?qū)ο笤O(shè)計(jì)原則。

對(duì)接口編程而不是對(duì)實(shí)現(xiàn)編程眠寿。
優(yōu)先使用對(duì)象組合而不是繼承躬翁。

  • 設(shè)計(jì)模式的使用
    設(shè)計(jì)模式在軟件開(kāi)發(fā)中的兩個(gè)主要用途。

  • 開(kāi)發(fā)人員的共同平臺(tái)
    設(shè)計(jì)模式提供了一個(gè)標(biāo)準(zhǔn)的術(shù)語(yǔ)系統(tǒng)盯拱,且具體到特定的情景盒发。例如,單例設(shè)計(jì)模式意味著使用單個(gè)對(duì)象狡逢,這樣所有熟悉單例設(shè)計(jì)模式的開(kāi)發(fā)人員都能使用單個(gè)對(duì)象宁舰,并且可以通過(guò)這種方式告訴對(duì)方,程序使用的是單例模式奢浑。

  • 最佳的實(shí)踐
    設(shè)計(jì)模式已經(jīng)經(jīng)歷了很長(zhǎng)一段時(shí)間的發(fā)展蛮艰,它們提供了軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的最佳解決方案。學(xué)習(xí)這些模式有助于經(jīng)驗(yàn)不足的開(kāi)發(fā)人員通過(guò)一種簡(jiǎn)單快捷的方式來(lái)學(xué)習(xí)軟件設(shè)計(jì)雀彼。

設(shè)計(jì)模式的六大原則

1壤蚜、開(kāi)閉原則(Open Close Principle)

開(kāi)閉原則的意思是:對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉详羡。在程序需要進(jìn)行拓展的時(shí)候仍律,不能去修改原有的代碼,實(shí)現(xiàn)一個(gè)熱插拔的效果实柠。簡(jiǎn)言之水泉,是為了使程序的擴(kuò)展性好,易于維護(hù)和升級(jí)。想要達(dá)到這樣的效果草则,我們需要使用接口和抽象類(lèi)钢拧,后面的具體設(shè)計(jì)中我們會(huì)提到這點(diǎn)。

2炕横、里氏代換原則(Liskov Substitution Principle)

里氏代換原則是面向?qū)ο笤O(shè)計(jì)的基本原則之一源内。 里氏代換原則中說(shuō),任何基類(lèi)可以出現(xiàn)的地方份殿,子類(lèi)一定可以出現(xiàn)膜钓。LSP 是繼承復(fù)用的基石,只有當(dāng)派生類(lèi)可以替換掉基類(lèi)卿嘲,且軟件單位的功能不受到影響時(shí)颂斜,基類(lèi)才能真正被復(fù)用,而派生類(lèi)也能夠在基類(lèi)的基礎(chǔ)上增加新的行為拾枣。里氏代換原則是對(duì)開(kāi)閉原則的補(bǔ)充沃疮。實(shí)現(xiàn)開(kāi)閉原則的關(guān)鍵步驟就是抽象化,而基類(lèi)與子類(lèi)的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn)梅肤,所以里氏代換原則是對(duì)實(shí)現(xiàn)抽象化的具體步驟的規(guī)范司蔬。

3、依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)

這個(gè)原則是開(kāi)閉原則的基礎(chǔ)姨蝴,具體內(nèi)容:針對(duì)接口編程俊啼,依賴于抽象而不依賴于具體。

4左医、接口隔離原則(Interface Segregation Principle)

這個(gè)原則的意思是:使用多個(gè)隔離的接口吨些,比使用單個(gè)接口要好。它還有另外一個(gè)意思是:降低類(lèi)之間的耦合度炒辉。由此可見(jiàn),其實(shí)設(shè)計(jì)模式就是從大型軟件架構(gòu)出發(fā)泉手、便于升級(jí)和維護(hù)的軟件設(shè)計(jì)思想黔寇,它強(qiáng)調(diào)降低依賴,降低耦合斩萌。

5缝裤、迪米特法則,又稱最少知道原則(Demeter Principle)

最少知道原則是指:一個(gè)實(shí)體應(yīng)當(dāng)盡量少地與其他實(shí)體之間發(fā)生相互作用颊郎,使得系統(tǒng)功能模塊相對(duì)獨(dú)立憋飞。

6、合成復(fù)用原則(Composite Reuse Principle)

合成復(fù)用原則是指:盡量使用合成/聚合的方式姆吭,而不是使用繼承榛做。

the-relationship-between-design-patterns.jpg

參考資料
runoob

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子检眯,更是在濱河造成了極大的恐慌厘擂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锰瘸,死亡現(xiàn)場(chǎng)離奇詭異刽严,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)避凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)舞萄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人管削,你說(shuō)我怎么就攤上這事倒脓。” “怎么了佩谣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵把还,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我茸俭,道長(zhǎng)吊履,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任调鬓,我火速辦了婚禮艇炎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腾窝。我一直安慰自己缀踪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布虹脯。 她就那樣靜靜地躺著驴娃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪循集。 梳的紋絲不亂的頭發(fā)上唇敞,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音咒彤,去河邊找鬼疆柔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镶柱,可吹牛的內(nèi)容都是我干的旷档。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼歇拆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鞋屈!你這毒婦竟也來(lái)了范咨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谐区,失蹤者是張志新(化名)和其女友劉穎湖蜕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宋列,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昭抒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炼杖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灭返。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坤邪,靈堂內(nèi)的尸體忽然破棺而出熙含,到底是詐尸還是另有隱情,我是刑警寧澤艇纺,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布怎静,位于F島的核電站,受9級(jí)特大地震影響黔衡,放射性物質(zhì)發(fā)生泄漏蚓聘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一盟劫、第九天 我趴在偏房一處隱蔽的房頂上張望夜牡。 院中可真熱鬧,春花似錦侣签、人聲如沸塘装。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹦肴。三九已至,卻和暖如春猴娩,著一層夾襖步出監(jiān)牢的瞬間冗尤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工胀溺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人皆看。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓仓坞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腰吟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子无埃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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

  • 設(shè)計(jì)模式六大原則 開(kāi)閉原則 開(kāi)閉原則徙瓶,是說(shuō)對(duì)于軟件實(shí)體(類(lèi)、模塊嫉称、函數(shù)等等)應(yīng)該可以拓展侦镇,但是不可修改 這句話有兩...
    ChaLLengerZeng閱讀 873評(píng)論 0 0
  • 設(shè)計(jì)模式6大原則 轉(zhuǎn)自:http://www.cnblogs.com/devinzhang/archive/201...
    犀利的小眼神閱讀 429評(píng)論 0 1
  • 目錄: 設(shè)計(jì)模式六大原則(1):?jiǎn)我宦氊?zé)原則 設(shè)計(jì)模式六大原則(2):里氏替換原則 設(shè)計(jì)模式六大原則(3):依賴倒...
    加油小杜閱讀 719評(píng)論 0 1
  • 一、單一職責(zé)原則(Single Responsibility Principle) 定義:就一個(gè)類(lèi)而言织阅, 應(yīng)該僅有...
    好大一只龍閱讀 350評(píng)論 0 0
  • 我不知道這種野花是什么時(shí)候開(kāi)放的壳繁,我只知道我開(kāi)始路過(guò)它們,我總不經(jīng)意的隨手觸摸一下它們荔棉。 輕輕的闹炉,卻不是愛(ài)憐,只是...
    小夢(mèng)隨安閱讀 479評(píng)論 0 2