設(shè)計(jì)模式 第一周 博覽網(wǎng)

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

衡量一個(gè)設(shè)計(jì)模式成功與否的關(guān)鍵
1.依賴倒置原則(DIP)

  • 高層模塊(穩(wěn)定)不應(yīng)該依賴于低層模塊(變化),二者都應(yīng)該依賴于抽象(穩(wěn)定)矮慕。
  • 抽象(穩(wěn)定)不應(yīng)該依賴于實(shí)現(xiàn)細(xì)節(jié)(變化)嗦篱,實(shí)現(xiàn)細(xì)節(jié)應(yīng)該依賴于抽象(穩(wěn)定)。
    (依賴分為編譯時(shí)依賴和運(yùn)行時(shí)依賴,編譯時(shí)依賴即編譯A時(shí)B必須
    已經(jīng)存在损晤,即A依賴于B)
  • 我們一般都是通過(guò)抽象類來(lái)隔離變化。
    2.開(kāi)放封閉原則(OCP)
  • 對(duì)擴(kuò)展開(kāi)放红竭,對(duì)更改封閉尤勋。(即通過(guò)增加模塊來(lái)應(yīng)對(duì)新需求,而不是重新進(jìn)行更改)
  • 類模塊應(yīng)該是可擴(kuò)展的茵宪,而不是可修改的最冰。
    3.單一職責(zé)原則(SRP)
  • 一個(gè)類應(yīng)該僅有一個(gè)引起他變化的原因
  • 變化的方向隱含的類的責(zé)任。(即類的功能不應(yīng)該太多稀火,太多意味著承擔(dān)太多的功能)
    4.Liskov替換原則(LSP)
  • 子類必須能夠替換它們的基類(IS-A)
  • 繼承表達(dá)類型抽象暖哨。
    5.接口隔離原則(ISP)
  • 不應(yīng)該強(qiáng)迫客戶程序依賴它們不用的方法。(即提供盡可能少的public方法凰狞,在真正有必要的時(shí)候才暴露出去)
  • 接口應(yīng)該小而完備篇裁。
    6.優(yōu)先使用對(duì)象組合,而不是類繼承
  • 類繼承通常為“白箱復(fù)用”赡若,對(duì)象組合通常為“黑箱復(fù)用”
  • 繼承在某種程度上破壞了封裝达布,子類父類耦合度高。
  • 對(duì)象組合只要求被組合的對(duì)象具有良好定義的接口逾冬,耦合度低黍聂。
    7.封裝變化點(diǎn)
    使用封裝來(lái)創(chuàng)建對(duì)象之間的分界層,讓設(shè)計(jì)者可以在分界的一側(cè)進(jìn)行修改身腻,而不會(huì)對(duì)另外一側(cè)產(chǎn)生不良的影響产还,從而實(shí)現(xiàn)層次間的松耦合。
    8.針對(duì)接口編程霸株,而不是針對(duì)實(shí)現(xiàn)編程雕沉。
  • 不將變量類型聲明為某個(gè)特定的具體類,而是聲明為某個(gè)接口去件。
  • 客戶程序無(wú)須獲知對(duì)象的具體類型坡椒,只需要知道對(duì)象所具有的接口。
  • 減少系統(tǒng)中各部分的依賴關(guān)系尤溜,從而實(shí)現(xiàn)“高內(nèi)聚倔叼、松耦合”的類型設(shè)計(jì)方案。

GoF的23中模式的分類

image.png

另一種分類方式:
image.png

  • 現(xiàn)代軟件設(shè)計(jì)的特征是“需求的頻繁變化”宫莱。設(shè)計(jì)模式的要點(diǎn)是尋找變化點(diǎn)丈攒,然后在變化點(diǎn)處應(yīng)用設(shè)計(jì)模式
  • 記住沒(méi)有一步到位的設(shè)計(jì)模式,軟件的設(shè)計(jì)模式重構(gòu)是最適合的設(shè)計(jì)模式
    參考書目:
    image.png

    image.png

重構(gòu)的關(guān)鍵技法:

動(dòng)態(tài)->靜態(tài)
早綁定->晚綁定
繼承->組合
編譯時(shí)依賴->運(yùn)行時(shí)依賴
緊耦合->松耦合

image.png

Decorator裝飾者模式-單一職責(zé)模式

image.png

image.png

image.png

image.png

image.png

Bridge橋模式-單一職責(zé)模式

image.png

image.png

image.png

image.png

image.png
image.png

template method 模式-組件協(xié)作模式

image.png

image.png
image.png

image.png

image.png

image.png

hah.png

image.png

Strategy模式-組件協(xié)作模式

image.png

image.png

image.png

image.png

image.png

Observer觀察者模式-組件協(xié)作模式

observer

image.png

image.png

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市巡验,隨后出現(xiàn)的幾起案子际插,更是在濱河造成了極大的恐慌,老刑警劉巖显设,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件框弛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捕捂,警方通過(guò)查閱死者的電腦和手機(jī)瑟枫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)指攒,“玉大人慷妙,你說(shuō)我怎么就攤上這事≡试茫” “怎么了膝擂?”我有些...
    開(kāi)封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)隙弛。 經(jīng)常有香客問(wèn)我猿挚,道長(zhǎng),這世上最難降的妖魔是什么驶鹉? 我笑而不...
    開(kāi)封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮铣墨,結(jié)果婚禮上室埋,老公的妹妹穿的比我還像新娘。我一直安慰自己伊约,他們只是感情好姚淆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著屡律,像睡著了一般腌逢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上超埋,一...
    開(kāi)封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天搏讶,我揣著相機(jī)與錄音,去河邊找鬼霍殴。 笑死媒惕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的来庭。 我是一名探鬼主播妒蔚,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了肴盏?” 一聲冷哼從身側(cè)響起科盛,我...
    開(kāi)封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菜皂,沒(méi)想到半個(gè)月后贞绵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幌墓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年但壮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片常侣。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜡饵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胳施,到底是詐尸還是另有隱情溯祸,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布舞肆,位于F島的核電站焦辅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏椿胯。R本人自食惡果不足惜筷登,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哩盲。 院中可真熱鬧前方,春花似錦、人聲如沸廉油。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抒线。三九已至班巩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘶炭,已是汗流浹背抱慌。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旱物,地道東北人遥缕。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像宵呛,于是被迫代替她去往敵國(guó)和親单匣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用户秤、多...
    MinoyJet閱讀 3,922評(píng)論 1 15
  • 設(shè)計(jì)模式基本原則 開(kāi)放-封閉原則(OCP)码秉,是說(shuō)軟件實(shí)體(類、模塊鸡号、函數(shù)等等)應(yīng)該可以拓展转砖,但是不可修改。開(kāi)-閉原...
    西山薄涼閱讀 3,760評(píng)論 3 13
  • 目錄: 設(shè)計(jì)模式六大原則(1):?jiǎn)我宦氊?zé)原則 設(shè)計(jì)模式六大原則(2):里氏替換原則 設(shè)計(jì)模式六大原則(3):依賴倒...
    加油小杜閱讀 722評(píng)論 0 1
  • title: 設(shè)計(jì)模式簡(jiǎn)介categories: 設(shè)計(jì)模式tags: 設(shè)計(jì)模式date: 2017-05-03 0...
    九命丿相柳閱讀 581評(píng)論 0 0
  • 設(shè)計(jì)模式簡(jiǎn)介: 什么是設(shè)計(jì)模式鲸伴?每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題府蔗,以及該問(wèn)題的解決方案的核心。這樣...
    hjsadam閱讀 329評(píng)論 0 2