常用設計模式匯總

最近牌废,我在看Head First設計模式廉侧。這本書寫的非常棒页响,讀的過程中總有“原來代碼還可以這樣設計”的感覺,對我有醍醐灌頂?shù)墓πФ翁埽瑯O力推薦大家閱讀看看拘泞。不過在讀完全書之后發(fā)現(xiàn)好多模式的概念和使用場景都忘了,或者已經(jīng)記得不清晰了枕扫,為了方便日后的學習與記憶,在此進行了一番整理辱魁。

設計模式的六大原則:

1烟瞧、單一職責原則(Single Responsibility Principle)
就一個類而言,應該僅有一個引起它變化的原因染簇。簡單地說就是一個類只做一件事参滴。
2、開閉原則(Open Close Principle)
開閉原則就是說對擴展開放锻弓,對修改關閉砾赔。在程序需要進行拓展的時候,不能去修改原有的代碼青灼,實現(xiàn)一個熱插拔的效果暴心。所以一句話概括就是:為了使程序的擴展性好,易于維護和升級杂拨。想要達到這樣的效果专普,我們需要使用接口和抽象類。
3弹沽、里氏代換原則(Liskov Substitution Principle)
里氏代換原則面向對象設計的基本原則之一檀夹。 里氏代換原則中說筋粗,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)炸渡。 LSP是繼承復用的基石娜亿,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時蚌堵,基類才能真正被復用买决,而衍生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對“開-閉”原則的補充辰斋。實現(xiàn)“開-閉”原則的關鍵步驟就是抽象化策州。而基類與子類的繼承關系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范宫仗」还遥—— From Baidu 百科
4、依賴倒轉原則(Dependence Inversion Principle)
這個是開閉原則的基礎藕夫,具體內容:真對接口編程孽糖,依賴于抽象而不依賴于具體。
5毅贮、接口隔離原則(Interface Segregation Principle)
這個原則的意思是:使用多個隔離的接口办悟,比使用單個接口要好。還是一個降低類之間的耦合度的意思滩褥,從這兒我們看出病蛉,其實設計模式就是一個軟件的設計思想,從大型軟件架構出發(fā)瑰煎,為了升級和維護方便铺然。所以上文中多次出現(xiàn):降低依賴,降低耦合酒甸。
6魄健、迪米特法則(最少知道原則)(Demeter Principle)
為什么叫最少知道原則,就是說:一個實體應當盡量少的與其他實體之間發(fā)生相互作用插勤,使得系統(tǒng)功能模塊相對獨立沽瘦。

常用設計模式一覽:

名稱 定義 設計原則 例子
策略模式 定義算法族,分別封裝起來农尖,讓他們之間可以互相替換析恋,此模式讓算法的變化獨立于使用算法的客戶。 1.封裝變化卤橄。
2.多用組合绿满,少用繼承。
3.針對接口編程窟扑,不針對實現(xiàn)編程喇颁。
策略模式1 <br /> <br /> 策略模式2
觀察者模式 在對象之間定義一對多的依賴漏健,這樣一來當一個對象改變狀態(tài),依賴它的對象都會收到通知橘霎,并自動更新蔫浆。 為了交互對象之間的松耦合設計而努力。 觀察者模式
裝飾者模式 動態(tài)的將責任附加到對象上姐叁。若要擴展功能瓦盛,裝飾者提供了比繼承更有彈性的替代方案。 對擴展開放外潜,對修改關閉原环。 裝飾者模式
工廠方法模式 定義了一個創(chuàng)建對象的接口,但由子類決定要實例化的類是哪一個处窥。工廠方法讓類把實例化推遲到子類嘱吗。 依賴抽象,不要依賴具體類滔驾。(依賴倒置) 工廠方法模式1 <br /> <br /> 工廠方法模式2
抽象工廠模式 提供了一接口谒麦,用于創(chuàng)建相關或依賴對象的家族,而不需要明確指定具體類哆致。 同上 抽象工廠模式
單例模式 確保一個類只有一個實例绕德,并提供一個全局訪問點。 - 單例模式
命令模式 將請求封裝成對象摊阀,這可以讓你使用不同的請求耻蛇,隊列,或者日志請求來參數(shù)化其他對象胞此。命令模式也可以支持撤銷工作城丧。 - 命令模式
適配器模式 將一個類的接口,轉換成客戶期望的另一個接口豌鹤。適配器讓原本接口不兼容的類可以合作無間。 - 適配器模式
外觀模式 提供了一個統(tǒng)一的接口枝缔,用來訪問子系統(tǒng)中的一群接口布疙。外觀定義了一個高層接口,讓子系統(tǒng)更容易使用愿卸。 最少知識原則(德墨忒爾法則):只和你的密友談話灵临。 外觀模式 <br /> <br /> 注:適配器將一個對象包裝起來以改變其接口;裝飾者將一個對象包裝起來以增加新的行為和責任趴荸;而外觀將一群對象“包裝”起來以簡化其接口儒溉。
模板方法模式 在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中发钝。模板方法使得子類可以在不改變算法結構的情況下顿涣,重新定義算法中的某些步驟波闹。 好萊塢原則:別調用(打電話給)我們,我們會調用(打電話給)你涛碑。 模板方法模式
迭代器模式 提供一種方法順序訪問一個聚合對象中的各個元素精堕,而又不暴露其內部的表示。 一個類應該只有一個引起變化的原因蒲障。 迭代器模式
組合模式 允許你將對象組成樹形結構來表現(xiàn)“整體/部分”的層次結構歹篓。組合能讓客戶以一致的方式處理個別對象和對象組合。 - 組合模式
狀態(tài)模式 允許對象在內部狀態(tài)改變時改變它的行為揉阎,對象看起來好像修改了它的類庄撮。 - 狀態(tài)模式
代理模式 為另一個對象提供一個替身或占位符以控制對這個對象的訪問。 - 靜態(tài)代理 <br /> <br /> 動態(tài)代理

思維導圖

design.png

圖片鏈接

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末洞斯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惧财,更是在濱河造成了極大的恐慌,老刑警劉巖厅翔,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異甸昏,居然都是意外死亡,警方通過查閱死者的電腦和手機翻默,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恰起,“玉大人修械,你說我怎么就攤上這事〖炫危” “怎么了肯污?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我蹦渣,道長哄芜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任剂桥,我火速辦了婚禮忠烛,結果婚禮上,老公的妹妹穿的比我還像新娘权逗。我一直安慰自己美尸,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布斟薇。 她就那樣靜靜地躺著师坎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堪滨。 梳的紋絲不亂的頭發(fā)上胯陋,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音袱箱,去河邊找鬼遏乔。 笑死,一個胖子當著我的面吹牛发笔,可吹牛的內容都是我干的盟萨。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼了讨,長吁一口氣:“原來是場噩夢啊……” “哼捻激!你這毒婦竟也來了?” 一聲冷哼從身側響起前计,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤胞谭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后男杈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丈屹,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年伶棒,在試婚紗的時候發(fā)現(xiàn)自己被綠了泉瞻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡苞冯,死狀恐怖,靈堂內的尸體忽然破棺而出侧巨,到底是詐尸還是另有隱情舅锄,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站皇忿,受9級特大地震影響畴蹭,放射性物質發(fā)生泄漏。R本人自食惡果不足惜鳍烁,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一叨襟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幔荒,春花似錦糊闽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至姚垃,卻和暖如春念链,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背积糯。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工掂墓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人看成。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓君编,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绍昂。 傳聞我的和親對象是個殘疾皇子啦粹,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容

  • 設計模式之六大原則(轉載) 關于設計模式的六大設計原則的資料網(wǎng)上很多...
    霄霄霄霄閱讀 898評論 0 1
  • 前言 設計模式六大原則網(wǎng)上資料比較多比較亂,本文將網(wǎng)上的一些好的資料做一下整理窘游,以便隨時翻閱唠椭。友情提示,設計模式雖...
    簡單的土豆閱讀 1,431評論 0 10
  • title: 設計模式簡介categories: 設計模式tags: 設計模式date: 2017-05-03 0...
    九命丿相柳閱讀 581評論 0 0
  • 本文集網(wǎng)絡上文章及自己coding和理解的結果而來忍饰,是設計模式學習的開篇贪嫂。 本文介紹設計模式的一些概念,分類艾蓝,和設...
    月落蝶殤閱讀 497評論 0 0
  • 設計模式之六大原則(轉載) 設計模式之六大原則(轉載) 關于設計模式的六大設計原則的資料網(wǎng)上很多力崇,但是很多地方解釋...
    天涯人1196閱讀 326評論 0 0