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

什么叫設(shè)計(jì)模式

設(shè)計(jì)模式是一套被反復(fù)使用的壤蚜、多數(shù)人知曉的、經(jīng)過(guò)分類編目的徊哑、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)袜刷。

為什么使用設(shè)計(jì)模式

使用設(shè)計(jì)模式是為了重用代碼、讓代碼更容易被他人理解莺丑、保證代碼可靠性著蟹。

解決什么問(wèn)題

項(xiàng)目中合理地運(yùn)用設(shè)計(jì)模式可以完美地解決很多問(wèn)題,每種模式在現(xiàn)實(shí)中都有相應(yīng)的原理來(lái)與之對(duì)應(yīng)梢莽,每種模式都描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題萧豆,以及該問(wèn)題的核心解決方案,這也是設(shè)計(jì)模式能被廣泛應(yīng)用的原因昏名。

設(shè)計(jì)模式的特征

■模式發(fā)現(xiàn)過(guò)程中需要遵循大三律涮雷,即只有經(jīng)過(guò)三個(gè)以上不同類型(或不同領(lǐng)域)的系統(tǒng)的檢驗(yàn),一個(gè)解決方案才能從候選模式升格為模式轻局。

■一套被反復(fù)使用洪鸭、多數(shù)人知曉的、經(jīng)過(guò)分類編目的仑扑、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)览爵,是為了可重用代碼、讓代碼更容易被他人理解镇饮、保證代碼可靠性蜓竹。

GoF設(shè)計(jì)模式



常用的面向?qū)ο笤O(shè)計(jì)原則

(面向?qū)ο笤O(shè)計(jì)原則和設(shè)計(jì)模式是對(duì)系統(tǒng)進(jìn)行合理重構(gòu)的指南針? )

單一職責(zé)原則:一個(gè)對(duì)象應(yīng)該只包含單一的職責(zé),并且該職責(zé)被完整的封裝在一個(gè)類(模塊)中

????????????分析:承擔(dān)的責(zé)任越多盒让,可復(fù)用性越小

????????????????????????實(shí)現(xiàn)高內(nèi)聚低耦合

開(kāi)閉原則:對(duì)擴(kuò)展開(kāi)放梅肤,對(duì)修改關(guān)閉。也就是說(shuō)在設(shè)計(jì)一個(gè)模塊的時(shí)候邑茄,應(yīng)當(dāng)使這個(gè)模塊在不被修改的前提下被擴(kuò)展姨蝴,即實(shí)現(xiàn)在不修改源代碼的情況下改變這個(gè)模塊的行為

? ? ? ? ? ?分析:軟件實(shí)體可以指一個(gè)軟件模塊、多個(gè)類組成的局部結(jié)構(gòu)或一個(gè)獨(dú)立的類肺缕。

? ? ? ? ? ? ? ? ? ? ? ?抽象化是開(kāi)閉原則的關(guān)鍵左医。

? ? ? ? ? ? ? ? ? ? ? ?可以通過(guò)“對(duì)可變性封裝原則”來(lái)描述,對(duì)可變性封裝原則要求找到系統(tǒng)的可變因素并將其封裝起來(lái)同木。


里氏代換原則:一個(gè)可以接受基類對(duì)象的地方必然可以接受一個(gè)子類對(duì)象浮梢。(所有引用基類(父類)的地方必須能透明地使用其子類的對(duì)象。)

? ? ? ? ? ? ?分析:如果能夠使用基類對(duì)象彤路,那么一定能夠使用其子類對(duì)象秕硝。把基類都替換成它的子類,程序?qū)⒉粫?huì)產(chǎn)生任何錯(cuò)誤和異常洲尊,反過(guò)來(lái)則不成立远豺,如果一個(gè)軟件實(shí)體使用的是一個(gè)子類的話奈偏,那么它不一定能夠使用基類。

????????????????????????實(shí)現(xiàn)開(kāi)閉原則的重要方式之一躯护,程序中盡量使用基類類型來(lái)對(duì)對(duì)象進(jìn)行定義惊来,而在運(yùn)行時(shí)再確定其子類類型,用子類對(duì)象來(lái)替換父類對(duì)象棺滞。

依賴倒轉(zhuǎn)原則:要針對(duì)抽象層編程裁蚁,而不是針對(duì)具體類編程

? ? ? ? ? ? 分析:代碼要依賴于抽象的類,而不要依賴于具體的類继准;要針對(duì)接口或抽象類編程枉证,而不是針對(duì)具體類編程。

????????????????????????依賴倒轉(zhuǎn)原則就是面向?qū)ο笤O(shè)計(jì)的主要手段锰瘸。

????????????????????????依賴倒轉(zhuǎn)原則的常用實(shí)現(xiàn)方式之一是在代碼中使用抽象類刽严,而將具體類放在配置文件中昂灵。

接口隔離原則:使用多個(gè)專門的接口來(lái)取代一個(gè)統(tǒng)一的接口

? ? ? ? ? ? ? ?分析:首先必須滿足單一職責(zé)原則避凝,將一組相關(guān)的操作定義在一個(gè)接口中,且在滿足高內(nèi)聚的前提下眨补,接口中的方法越少越好管削。

????????????????????????????可以在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)采用定制服務(wù)的方式,即為不同的客戶端提供寬窄不同的接口撑螺,只提供用戶需要的行為含思,而隱藏用戶不需要的行為。

合成復(fù)用原則: 盡量多使用組合和聚合關(guān)聯(lián)關(guān)系甘晤,少用甚至不用繼承關(guān)系

? ? ? ? ? ? ? ?分析:繼承復(fù)用:實(shí)現(xiàn)簡(jiǎn)單含潘,易于擴(kuò)展。破壞系統(tǒng)的封裝性线婚;從基類繼承而來(lái)的實(shí)現(xiàn)是靜態(tài)的遏弱,不可能在運(yùn)行時(shí)發(fā)生改變,沒(méi)有足夠的靈活性塞弊;只能在有限的環(huán)境中使用漱逸。(“白箱"復(fù)用)

????????????????????????????組合/聚合復(fù)用:耦合度相對(duì)較低,選擇性地調(diào)用成員對(duì)象的操作游沿;可以在運(yùn)行時(shí)動(dòng)態(tài)進(jìn)行饰抒。(“黑箱"復(fù)用)

迪米特法則:一個(gè)軟件實(shí)體對(duì)其他實(shí)體的引用越少越好?

? ? ? ? ? ? ? ? 分析:一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少的與其他實(shí)體發(fā)生相互作用。


設(shè)計(jì)模式的三種類型? 都有那些

? 創(chuàng)建型 :對(duì)象實(shí)例化的模式诀黍,創(chuàng)建型模式用于解耦對(duì)象的實(shí)例化過(guò)程

? 結(jié)構(gòu)型:把類或?qū)ο蠼Y(jié)合在一起形成一個(gè)更大的結(jié)構(gòu)袋坑。

? 行為型 :類和對(duì)象如何交互,及劃分責(zé)任和算法


創(chuàng)建型:創(chuàng)建型模式對(duì)類的實(shí)例化過(guò)程進(jìn)行抽象眯勾,將軟件模塊中對(duì)象的創(chuàng)建和對(duì)象的使用進(jìn)行分離枣宫。外界對(duì)于這些對(duì)象只需知道它們共同的接口疆柔,隱藏了類的實(shí)例的創(chuàng)建細(xì)節(jié),通過(guò)隱藏對(duì)象如何被創(chuàng)建和組合在一起達(dá)到使整個(gè)系統(tǒng)獨(dú)立的目的镶柱。

創(chuàng)建型模式:簡(jiǎn)單工廠? 工廠方法? ? 抽象工廠? 建造者模式



結(jié)構(gòu)型:描述如何將類或者對(duì)象結(jié)合在一起形成更大的結(jié)構(gòu)旷档。結(jié)構(gòu)型模式可以分為類結(jié)構(gòu)性模式和對(duì)象結(jié)構(gòu)型模式

結(jié)構(gòu)型模式:適配器? 代理模式? 橋接模式? 外觀模式? 享元模式



行為型:1.行為型模式是對(duì)在不同的對(duì)象之間劃分責(zé)任和算法的抽象化

2.行為型模式關(guān)注類和對(duì)象的結(jié)構(gòu),并重點(diǎn)關(guān)注他們之間的相互作用

3.通過(guò)行為型模式歇拆,可以更加清晰的劃分類與對(duì)象的職責(zé)鞋屈,并研究系統(tǒng)在運(yùn)行時(shí)實(shí)例對(duì)象之間的交互

4.行為型模式分為類行為型和對(duì)象行為型模式兩種。(1)類行為型模式使用繼承關(guān)系在幾個(gè)類之間分配行為(2)對(duì)象的行為型模式則使用對(duì)象的聚合關(guān)聯(lián)關(guān)系來(lái)分配行為

行為型模式:職責(zé)鏈模式? 觀察者模式? 命令模式? 解釋器模式? 迭代器模式? 中介者模式? 備忘錄模式? 狀態(tài)模式? 策略模式


淺顯理解故觅,如有錯(cuò)誤厂庇,請(qǐng)及時(shí)指正批評(píng)!J淅簟权旷!

更多內(nèi)容請(qǐng)點(diǎn)擊查看

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贯溅,隨后出現(xiàn)的幾起案子拄氯,更是在濱河造成了極大的恐慌,老刑警劉巖它浅,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件译柏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡姐霍,警方通過(guò)查閱死者的電腦和手機(jī)鄙麦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)镊折,“玉大人胯府,你說(shuō)我怎么就攤上這事『夼撸” “怎么了骂因?”我有些...
    開(kāi)封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)与纽。 經(jīng)常有香客問(wèn)我侣签,道長(zhǎng),這世上最難降的妖魔是什么急迂? 我笑而不...
    開(kāi)封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任影所,我火速辦了婚禮,結(jié)果婚禮上僚碎,老公的妹妹穿的比我還像新娘猴娩。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布卷中。 她就那樣靜靜地躺著矛双,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蟆豫。 梳的紋絲不亂的頭發(fā)上议忽,一...
    開(kāi)封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音十减,去河邊找鬼栈幸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛帮辟,可吹牛的內(nèi)容都是我干的速址。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼由驹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芍锚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蔓榄,我...
    開(kāi)封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤并炮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后润樱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體渣触,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年壹若,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皂冰。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡店展,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秃流,到底是詐尸還是另有隱情赂蕴,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布舶胀,位于F島的核電站概说,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嚣伐。R本人自食惡果不足惜糖赔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望轩端。 院中可真熱鬧放典,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至弥臼,卻和暖如春宴咧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背径缅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工悠汽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芥驳。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓柿冲,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親兆旬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子假抄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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