一、設計模式(Design pattern)是什麼? 設計模式是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 二、為什麼要有設計模式? 在軟體開發過程中,一個功能的實現方式多種多樣,不同方法的可擴展性、可維護 ...
一、設計模式(Design pattern)是什麼?
設計模式是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
二、為什麼要有設計模式?
在軟體開發過程中,一個功能的實現方式多種多樣,不同方法的可擴展性、可維護性以及復用性都是不一樣的。隨著一個人對自己項目代碼的要求增加,他會逐漸思考和實踐出自己的一套方法或者思想,這種方法或思想決定了他設計出的架構或者編寫出的代碼的質量優劣。設計模式就屬於這樣一種經驗的積累,是由大量優秀的工程師或者架構師總結和提煉的精華,學習好設計模式等於讓我們站在了巨人的肩膀上,從一個高的起點出發,可以避免走很多彎路。
三、設計模式的分類
一般情況下,我們把設計模式分成了三大類:
(一)創建型模式(Creational patterns)
創建型模式是為了解決創建對象時候遇到的問題。因為基本的對象創建方式可能會導致設計上的問題,或增加設計的複雜度,創建型設計模式有兩個主導思想:一是將系統使用的具體類封裝起來,二是隱藏這些具體類的實例創建和結合方式。
創建型模式主要有以下五種:
- 簡單工廠模式(Factory method) 和 工廠方法模式(Simple Factory)
- 抽象工廠模式(Abstract factory)
- 單例模式(Singleton)
- 建造者模式(Builder)
- 原型模式(Prototype)
GOF在《設計模式》一書中將工廠模式分為兩類:工廠方法模式(Factory Method)與抽象工廠模式(Abstract Factory)。將簡單工廠模式(Simple Factory)看為工廠方法模式的一種特例,兩者歸為一類。
(二)結構型模式(Structural pattern)
結構型模式是通過定義一個簡單方法來實現和瞭解實體間關係,從而簡化設計。
- 適配器模式(Adapter)
- 橋接模式(Bridge)
- 合成模式(Composite)
- 裝飾者模式(Decorator)
- 表象模式(Facade)
- 享元模式(Flyweight)
- 代理模式(Proxy)
(三)行為型模式(Behavioral pattern)
行為型模式是用來識別對象之間的常用交流模式並加以實現,使得交流變得更加靈活。
- 策略模式(Strategy)
- 模板方法模式(Template method)
- 觀察者模式(Observer)
- 迭代器模式(Iterator)
- 責任鏈模式(Chain of responsibility)
- 命令模式(Command)
- 備忘錄模式(Memento)
- 狀態模式(State)
- 訪問者模式(Visitor)
- 中介者模式(Mediator)
- 解釋器模式(Interpreter)
四、各個設計模式之間的關係 (這圖可以對設計模式有一定瞭解後,再回頭看會比較清晰)
五、小結
以上共23種設計模式,接下來逐一分享每一個設計模式的詳細介紹和在PHP里的應用場景以及案例。
如果有什麼說的疑問或者講錯的地方,歡迎大家留言。