本文為轉載母债,原文23種設計模式概述
分類
設計模式分為三大類:
創(chuàng)建型模式
午磁,共五種:工廠方法模式尝抖、抽象工廠模式、單例模式迅皇、建造者模式昧辽、原型模式。
結構型模式
登颓,共七種:適配器模式搅荞、裝飾器模式、代理模式框咙、外觀模式咕痛、橋接模式、組合模式喇嘱、享元模式茉贡。
行為型模式
,共十一種:策略模式者铜、模板方法模式腔丧、觀察者模式、迭代子模式王暗、責任鏈模式悔据、命令模式庄敛、備忘錄模式俗壹、狀態(tài)模式、訪問者模式藻烤、中介者模式绷雏、解釋器模式。
其實還有兩類
:并發(fā)型模式和線程池模式怖亭。
原則
設計模式的六大原則:
總原則-開閉原則
對擴展開放涎显,對修改封閉。在程序需要進行拓展的時候兴猩,不能去修改原有的代碼期吓,而是要擴展原有代碼,實現(xiàn)一個熱插拔的效果倾芝。所以一句話概括就是:為了使程序的擴展性好讨勤,易于維護和升級。
想要達到這樣的效果晨另,我們需要使用接口和抽象類等潭千,后面的具體設計中我們會提到這點。
單一職責原則
不要存在多于一個導致類變更的原因借尿,也就是說每個類應該實現(xiàn)單一的職責,否則就應該把類拆分钢悲。里氏替換原則(Liskov Substitution Principle)
任何基類可以出現(xiàn)的地方务傲,子類一定可以出現(xiàn)。里氏替換原則是繼承復用的基石茄靠,只有當衍生類可以替換基類,軟件單位的功能不受到影響時蝶桶,基類才能真正被復用嘹黔,而衍生類也能夠在基類的基礎上增加新的行為。
里氏代換原則是對“開-閉”原則的補充莫瞬。實現(xiàn)“開閉”原則的關鍵步驟就是抽象化儡蔓。而基類與子類的繼承關系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范疼邀。里氏替換原則中喂江,子類對父類的方法盡量不要重寫和重載。因為父類代表了定義好的結構旁振,通過這個規(guī)范的接口與外界交互获询,子類不應該隨便破壞它。依賴倒轉原則(Dependence Inversion Principle)
面向接口編程拐袜,依賴于抽象而不依賴于具體吉嚣。寫代碼時用到具體類時,不與具體類交互蹬铺,而與具體類的上層接口交互尝哆。接口隔離原則(Interface Segregation Principle)
每個接口中不存在子類用不到卻必須實現(xiàn)的方法,如果不然甜攀,就要將接口拆分秋泄。使用多個隔離的接口,比使用單個接口(多個接口方法集合到一個的接口)要好规阀。迪米特法則(最少知道原則)(Demeter Principle)
一個類對自己依賴的類知道的越少越好恒序。無論被依賴的類多么復雜,都應該將邏輯封裝在方法的內部谁撼,通過public方法提供給外部歧胁。這樣當被依賴的類變化時,才能最小的影響該類厉碟。
最少知道原則的另一個表達方式是:只與直接的朋友通信喊巍。類之間只要有耦合關系,就叫朋友關系墨榄。耦合分為依賴玄糟、關聯(lián)、聚合袄秩、組合等阵翎。我們稱出現(xiàn)為成員變量逢并、方法參數(shù)、方法返回值中的類為直接朋友郭卫。局部變量砍聊、臨時變量則不是直接的朋友。我們要求陌生的類不要作為局部變量出現(xiàn)在類中贰军。合成復用原則(Composite Reuse Principle)
盡量首先使用合成/聚合的方式玻蝌,而不是使用繼承。
C#實現(xiàn)
創(chuàng)建型模式
词疼,共五種:工廠方法模式俯树、抽象工廠模式、單例模式贰盗、建造者模式许饿、原型模式。
結構型模式
舵盈,共七種:適配器模式陋率、裝飾器模式、代理模式秽晚、外觀模式瓦糟、橋接模式、組合模式赴蝇、享元模式菩浙。
行為型模式
,共十一種:策略模式扯再、模板方法模式芍耘、觀察者模式、迭代子模式熄阻、責任鏈模式、命令模式倔约、備忘錄模式秃殉、狀態(tài)模式、訪問者模式浸剩、中介者模式钾军、解釋器模式。
源碼地址