與很多其他軟體工程技術一樣,設計模式起源于建築領域,它是對前人經驗的總結,為後人設計與開發基于面向對象的軟體提供指導方針和成熟的解決方案。
設計模式的定義
設計模式(Design Pattern)是一套被反複使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結,使用設計模式為了可重用代碼、讓代碼更容易被他人了解并且提高代碼的可靠性。設計模式是一種用于對軟體系統中不斷重制的設計問題的解決方案進行文檔化的技術,也是一種共享專家設計經驗的技術。
GoF對設計模式的定義:
設計模式是在特定環境下為解決某一通用軟體設計問題提供的一套定制的解決方案,該方案描述了對象和類之間的互相作用。
設計模式的分類
1.根據目的分類
根據目的分類,模式可分為建立型、結構型和行為型三類。
建立型模式:
此類型模式主要用于建立對象:
單例模式(Singleton Pattern)、工廠模式(Factory Pattern)、抽象工廠模式(Abstract Factory Pattern)、建造者模式(Builder Pattern)、原型模式(Prototype Pattern)
結構型模式
此類模式主要用于處理類或對象的組合:
擴充卡模式(Adapter Pattern)、橋接模式(Bridge Pattern)、過濾器模式(Filter、Criteria Pattern)、組合模式(Composite Pattern)、裝飾器模式(Decorator Pattern)、外觀模式(Facade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)
行為型模式
此類模式主要用于描述類或對象如何互動和怎麼樣配置設定職責:
責任鍊模式(Chain of Responsibility Pattern)、指令模式(Command Pattern)、解釋器模式(Interpreter Pattern)、疊代器模式(Iterator Pattern)、中介者模式(Mediator Pattern)、備忘錄模式(Memento Pattern)、觀察者模式(Observer Pattern)、狀态模式(State Pattern)、空對象模式(Null Object Pattern)、政策模式(Strategy Pattern)、模闆模式(Template Pattern)、通路者模式(Visitor Pattern)
2. 根據範圍分類
- 類模式:此類模式處理類和子類之間的關系,這些關系通過繼承建立,在編譯時就被确定下來,時一種靜态關系。
- 對象模式:此類模式處理對象間的關系,這些關系在運作時變化,更具動态性。