設計模式概述

一,概述

總體來說,設計模式分爲三大類:

1.創建型模式,共五種

工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式

2.結構型模式,共七種

適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式

3.行爲型模式,共十一種

策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式

二,具體概括

1.Singleton,單例模式,保證一個類只有一個實例,並提供一個訪問它的全局訪問點

2.Abstract Factory,抽象工廠模式,提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們的具體類

3.Factory Method,工廠方法,定義一個用於創建對象的接口,讓子類決定實例化哪一個類,使一個類的實例化延遲到了子類

4.Builder,建造者模式,將一個複雜對象的構建與它的表示相分離,使得同樣的構建過程可以創建不同的表示

5.Prototype,原型模式,用原型實例指定創建對象的種類,並且通過拷貝這些原型來創建新的對象


6.Iterator,迭代器模式,提供一個方法順序訪問一個聚合對象的各個元素,而又不保留該對象的內部表示

7.Observer,觀察者模式,定義對象間一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴它的對象都得到通知自動更新

8.Template Method,模板方法,定義一個操作中的算法的股價,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可以重定義該算法的某些特定步驟

9.Command,命令模式,將一個請求封裝爲一個對象,從而使你可以用不同的請求對客戶進行參數化,對請求排隊和記錄請求日誌,以及支持可撤銷的操作

10.State,狀態模式,允許對象在其內部狀態改變時改變它的行爲,對象看起來似乎改變了它的類

11.Strategy,策略模式,定義一系列算法,把它們一個個封裝起來,並使它們可以互相替換,使得算法可以獨立於使用它們的客戶

12.China of Responsibility,職責鏈模式,使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關係

13.Mediator,中介者模式,用一箇中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互

14.Visitor,訪問者模式,表示一個作用於某對象結構中的各元素的操作,它使你可以在不改變各元素類的前提下定義作用於這個元素的新操作

15.Interpreter,解釋器模式,給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子

16.Memento,備忘錄模式,在不破壞對象的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態


17.Composite,組合模式,將對象組合成樹形結構以表示部分整體關係,使得用戶對單個對象和組合對象的使用具有一致性

18.Facade,外觀模式,爲子系統中的一組接口提供一致的界面,提供一個高層接口,這個接口使得子系統更容易使用

19.Proxy,代理模式,爲其他對象提供一種代理以控制對這個對象的訪問

20.Adapter,適配器模式,將一類的接口轉換成客戶希望的另外一個接口,使得原本由於接口不兼容而不能在一起工作的那些類可以一起工作

21.Decorator,裝飾模式,動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更靈活

22.Bridge,橋模式,將抽象部分與它的實現部分相分離,使它們可以獨立變化

23.Flyweight,享元模式,運用共享技術有效地支持大量細粒度的對象

三,設計模式六大原則

總原則:開閉原則,即對擴展開放,對修改關閉,在程序需要進行擴展的時候,不能去修改原有的代碼,而是要擴展原有代碼,實現一個熱插拔的效果,即易於維護和升級。

1.單一職責原則

不要存在多餘一個導致類變更的原因,也就是說每個類應該實現單一的職責,如若不然,就應該把類拆分

2.里氏替換原則(Liskov Subsitution Principle)

LSP是面向對象設計的基本原則之一,任何基類可以出現的地方,子類一定可以出現。LSP是繼承服用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受影響時,基類才能真正被複用,而衍生類也能夠在基類的基礎上增加新的行爲。LSP原則中,子類對父類的方法儘量不要重寫和重載,因爲父類代表了定義好的結構,通過這個規範的接口與外界交互,子類不應該隨便破壞它

3.依賴倒轉原則

面向接口編程,依賴於抽象而不依賴於具體,寫代碼時用到具體類時,不與具體類交互,而與具體類的上層接口交互

4.接口隔離原則

每個接口中不存在子類用不到卻必須實現的方法,如若不然,就要將接口拆分,使用多個隔離的接口,比使用單個接口(多個接口方法集合到一個接口)要好

5.迪米特法則(最少知道原則)

一個類對自己依賴的類知道的越少越好,即無論被依賴的類對麼負責,都應該將邏輯封裝在方法的內部,通過public方法提供給外部,這樣當被依賴的類變化時,才能最小地影響該類。

6.合成複用原則

儘量首先使用合成/聚合的方式,而不是繼承

發佈了92 篇原創文章 · 獲贊 14 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章