23種設計模式概述

本文為轉載母债,原文23種設計模式概述

分類

設計模式分為三大類:
創(chuàng)建型模式午磁,共五種:工廠方法模式尝抖、抽象工廠模式、單例模式迅皇、建造者模式昧辽、原型模式。
結構型模式登颓,共七種:適配器模式搅荞、裝飾器模式、代理模式框咙、外觀模式咕痛、橋接模式、組合模式喇嘱、享元模式茉贡。
行為型模式,共十一種:策略模式者铜、模板方法模式腔丧、觀察者模式、迭代子模式王暗、責任鏈模式悔据、命令模式庄敛、備忘錄模式俗壹、狀態(tài)模式、訪問者模式藻烤、中介者模式绷雏、解釋器模式。
其實還有兩類:并發(fā)型模式和線程池模式怖亭。

原則

設計模式的六大原則:

總原則-開閉原則
對擴展開放涎显,對修改封閉。在程序需要進行拓展的時候兴猩,不能去修改原有的代碼期吓,而是要擴展原有代碼,實現(xiàn)一個熱插拔的效果倾芝。所以一句話概括就是:為了使程序的擴展性好讨勤,易于維護和升級。
想要達到這樣的效果晨另,我們需要使用接口和抽象類等潭千,后面的具體設計中我們會提到這點。

  1. 單一職責原則
    不要存在多于一個導致類變更的原因借尿,也就是說每個類應該實現(xiàn)單一的職責,否則就應該把類拆分钢悲。

  2. 里氏替換原則(Liskov Substitution Principle)
    任何基類可以出現(xiàn)的地方务傲,子類一定可以出現(xiàn)。里氏替換原則是繼承復用的基石茄靠,只有當衍生類可以替換基類,軟件單位的功能不受到影響時蝶桶,基類才能真正被復用嘹黔,而衍生類也能夠在基類的基礎上增加新的行為。
    里氏代換原則是對“開-閉”原則的補充莫瞬。實現(xiàn)“開閉”原則的關鍵步驟就是抽象化儡蔓。而基類與子類的繼承關系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范疼邀。里氏替換原則中喂江,子類對父類的方法盡量不要重寫和重載。因為父類代表了定義好的結構旁振,通過這個規(guī)范的接口與外界交互获询,子類不應該隨便破壞它。

  3. 依賴倒轉原則(Dependence Inversion Principle)
    面向接口編程拐袜,依賴于抽象而不依賴于具體吉嚣。寫代碼時用到具體類時,不與具體類交互蹬铺,而與具體類的上層接口交互尝哆。

  4. 接口隔離原則(Interface Segregation Principle)
    每個接口中不存在子類用不到卻必須實現(xiàn)的方法,如果不然甜攀,就要將接口拆分秋泄。使用多個隔離的接口,比使用單個接口(多個接口方法集合到一個的接口)要好规阀。

  5. 迪米特法則(最少知道原則)(Demeter Principle)
    一個類對自己依賴的類知道的越少越好恒序。無論被依賴的類多么復雜,都應該將邏輯封裝在方法的內部谁撼,通過public方法提供給外部歧胁。這樣當被依賴的類變化時,才能最小的影響該類厉碟。
    最少知道原則的另一個表達方式是:只與直接的朋友通信喊巍。類之間只要有耦合關系,就叫朋友關系墨榄。耦合分為依賴玄糟、關聯(lián)、聚合袄秩、組合等阵翎。我們稱出現(xiàn)為成員變量逢并、方法參數(shù)、方法返回值中的類為直接朋友郭卫。局部變量砍聊、臨時變量則不是直接的朋友。我們要求陌生的類不要作為局部變量出現(xiàn)在類中贰军。

  6. 合成復用原則(Composite Reuse Principle)
    盡量首先使用合成/聚合的方式玻蝌,而不是使用繼承。

C#實現(xiàn)

創(chuàng)建型模式词疼,共五種:工廠方法模式俯树、抽象工廠模式單例模式贰盗、建造者模式许饿、原型模式。
結構型模式舵盈,共七種:適配器模式陋率、裝飾器模式、代理模式秽晚、外觀模式瓦糟、橋接模式、組合模式赴蝇、享元模式菩浙。
行為型模式,共十一種:策略模式扯再、模板方法模式芍耘、觀察者模式、迭代子模式熄阻、責任鏈模式、命令模式倔约、備忘錄模式秃殉、狀態(tài)模式、訪問者模式浸剩、中介者模式钾军、解釋器模式。
源碼地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末绢要,一起剝皮案震驚了整個濱河市吏恭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌重罪,老刑警劉巖樱哼,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哀九,死亡現(xiàn)場離奇詭異,居然都是意外死亡搅幅,警方通過查閱死者的電腦和手機阅束,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茄唐,“玉大人息裸,你說我怎么就攤上這事』Ρ啵” “怎么了呼盆?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚁廓。 經(jīng)常有香客問我宿亡,道長,這世上最難降的妖魔是什么纳令? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任挽荠,我火速辦了婚禮,結果婚禮上平绩,老公的妹妹穿的比我還像新娘圈匆。我一直安慰自己,他們只是感情好捏雌,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布跃赚。 她就那樣靜靜地躺著,像睡著了一般性湿。 火紅的嫁衣襯著肌膚如雪纬傲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天肤频,我揣著相機與錄音叹括,去河邊找鬼。 笑死宵荒,一個胖子當著我的面吹牛汁雷,可吹牛的內容都是我干的。 我是一名探鬼主播报咳,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼侠讯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了暑刃?” 一聲冷哼從身側響起厢漩,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岩臣,沒想到半個月后溜嗜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宵膨,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年粱胜,在試婚紗的時候發(fā)現(xiàn)自己被綠了柄驻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡焙压,死狀恐怖鸿脓,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情涯曲,我是刑警寧澤野哭,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站幻件,受9級特大地震影響拨黔,放射性物質發(fā)生泄漏。R本人自食惡果不足惜绰沥,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一篱蝇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徽曲,春花似錦零截、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奥此,卻和暖如春弧哎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稚虎。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工撤嫩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祥绞。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓非洲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜕径。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容

  • 原文鏈接:http://blog.csdn.net/zhangerqing http://www.cnblogs....
    孤獨雜貨鋪閱讀 1,519評論 0 3
  • 純粹是個人學習總結败京,如有不對的地方請吐槽兜喻。 設計模式參考地址:http://www.cnblogs.com/mao...
    junwu_123閱讀 659評論 0 0
  • 一、設計模式的分類 總體來說設計模式分為三大類: 創(chuàng)建型模式赡麦,共五種:工廠方法模式朴皆、抽象工廠模式帕识、單例模式、建造者...
    lichengjin閱讀 900評論 0 8
  • 一遂铡、設計模式的分類 總體來說設計模式分為三大類: 創(chuàng)建型模式肮疗,共五種:工廠方法模式、抽象工廠模式扒接、單例模式伪货、建造者...
    RamboLI閱讀 753評論 0 1
  • 本文集網(wǎng)絡上文章及自己coding和理解的結果而來,是設計模式學習的開篇钾怔。 本文介紹設計模式的一些概念碱呼,分類,和設...
    月落蝶殤閱讀 510評論 0 0