設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟件開發人員所采用。
設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。
項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。
GOF
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名為《Design Patterns - Elements of Reusable Object-Oriented Software》(中文譯名:設計模式 - 可復用的面向對象軟件元素)的書,該書首次提到了軟件開發中設計模式的概念。該書提出了23種設計模式,并分成三大類:創建型模式(Creational Patterns)、結構型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。
他們所提出的設計模式主要是基于以下的面向對象設計原則。
- 對接口編程而不是對實現編程
- 優先使用對象組合而不是繼承
創建型模式
主要用于處理對象的創建,實例化對象。
創建型設計模式提供了一種在創建對象的同時隱藏創建邏輯的方式,不再由我們直接實例化對象。
而是根據特定場景,由程序來確定創建對象的方式,從而保證更大的性能、更好的架構優勢。
- 單例模式(Singleton)
- 建造者模式(Builder)
- 原型模式(Prototype)
- 簡單工廠模式(Simple Factory)(不在23設計模式之中)
- 工廠方法模式(Factory Method)
- 抽象工廠方法模式(Abstract Factory)
行為型模式
描述類或對象怎樣進行交互和職責分配。
行為型設計模式特別關注對象之間的通信,用于幫助系統間各對象的通信,以及如何控制復雜系統中流程。
- 策略模式(Strategy Pattern)
- 狀態模式(State Pattern)
- 責任鏈模式(Chain of Responsibility Pattern)
- 解釋器模式(Interpreter Pattern)
- 命令模式(Command Pattern)
- 觀察者模式(Observer Pattern)
- 備忘錄模式(Memento Pattern)
- 迭代器模式(Iterator Pattern)
- 模板方法模式(Template Pattern)
- 訪問者模式(Visitor Pattern)
- 中介者模式(Mediator Pattern)
- 空對象模式(Null Object Pattern)(不在23設計模式之中)
結構型模式
處理類或對象間的組合。
結構型設計模式關注類和對象的組合,用于幫助將多個對象組織成更大的結構。
繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。
- 代理模式(Proxy Pattern)
- 組合模式(Composite Pattern)
- 適配器模式(Adapter Pattern)
- 裝飾器模式(Decorator Pattern)
- 享元模式(Flyweight Pattern)
- 外觀模式(Facade Pattern)
- 橋接模式(Bridge Pattern)
- 過濾器模式(Filter、Criteria Pattern)(不在23設計模式之中)
具體設計模式的簡介,待更新...