1、 設計模式(Design pattern)是什麼
設計模式是一套被反覆使用、多數人知曉、通過分類編目的代碼設計的經驗總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。segmentfault
2、 爲何會有設計模式
在軟件開發過程當中,一個功能的實現方式多種多樣,不一樣方法的可擴展性、可維護性以及複用性都是不同的。隨着一我的對本身項目代碼的要求增長,他會逐漸思考和實踐出本身的一套方法或者思想,這種方法或思想決定了他設計出的架構或者編寫出的代碼的質量優劣。設計模式就屬於這樣一種經驗的積累,是由大量優秀的工程師或者架構師總結和提煉的精華,學習好設計模式等於讓咱們站在了巨人的肩膀上,從一個高的起點出發,能夠避免走不少彎路。設計模式
3、 設計模式的分類
通常狀況下,咱們把設計模式分紅了三大類:架構
建立型(Creational patterns)
建立型模式是爲了解決建立對象時候遇到的問題。由於基本的對象建立方式可能會致使設計上的問題,或增長設計的複雜度,建立型設計模式有兩個主導思想:一是將系統使用的具體類封裝起來,二是隱藏這些具體類的實例建立和結合方式。學習
建立型模式主要有如下五種:
- 簡單工廠模式(Simple Factory) 和 工廠方法模式(Factory method)
- 抽象工廠模式(Abstract factory)
- 單例模式(Singleton)
- 建造者模式(Builder)
- 原型模式(Prototype)
GOF在《設計模式》一書中將工廠模式分爲兩類:工廠方法模式(Factory Method)與抽象工廠模式(Abstract Factory)。將簡單工廠模式(Simple Factory)看爲工廠方法模式的一種特例,二者歸爲一類。ui
結構型模式(Structural pattern)
結構型模式是經過定義一個簡單方法來實現和了解實體間關係,從而簡化設計。spa
- 適配器模式(Adapter)
- 橋接模式(Bridge)
- 合成模式(Composite)
- 裝飾者模式(Decorator)
- 表象模式(Facade)
- 享元模式(Flyweight)
- 代理模式(Proxy)
行爲型模式(Behavioral pattern)
行爲型模式是用來識別對象之間的經常使用交流模式並加以實現,使得交流變得更加靈活。設計
- 策略模式(Strategy)
- 模板方法模式(Template method)
- 觀察者模式(Observer)
- 迭代器模式(Iterator)
- 責任鏈模式(Chain of responsibility)
- 命令模式(Command)
- 備忘錄模式(Memento)
- 狀態模式(State)
- 訪問者模式(Visitor)
- 中介者模式(Mediator)
- 解釋器模式(Interpreter)
4、 各個設計模式之間的關係 (這圖能夠對設計模式有必定了解後,再回頭看會比較清晰)
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
參考
系列源地址
WilburXu/design_pattern代理
系列目錄
- PHP 設計模式概述
- PHP設計模式(一)簡單工廠模式 (Simple Factory For PHP)
- PHP設計模式(二)工廠方法模式(Factory Method)
- PHP設計模式(三)抽象工廠模式(Abstract Factory)
- [PHP設計模式(四)單例模式(Singleton)](