Yii 2 設計模式「包含了兩個方面的內容:1. 設計模式,2. Yii 2 框架。git
《設計模式》一書雖然以JAVA語言來表達設計模式的思想,可是設計模式遠不限制於某一種特定的語言,而是在面向對象編程中通用的思想,各個語言也都有各自的實現方式。github
Yii 2 是一款優秀的 PHP Web 框架,Yii2 框架的裏裏外外都借鑑了不少設計模式的思想。並且,越是 Yii2 內核的部分,設計模式運用的越多。一樣的,其餘優秀的框架如 Symphony2/Laravel 也是如此,學習 Yii2 的設計模式,無疑對認識其餘框架,對提升本身編碼能力,加深對軟件設計的認識都很是有幫助。數據庫
Yii2 設計模式,集中體如今依賴注入(di),服務定位器(service locator),數據庫(db),緩存(cache),請求(Request),響應(Response)等核心組件上。編程
根據使用目的設計模式通常可爲分爲三類:設計模式
具體都有哪些,網上資料隨便一搜便出來了,筆者在這裏再也不列出來。緩存
《設計模式》提到的 23 中經典設計模式,PHP 都有本身實現的方式,其中有些模式用的並很少,此外 PHP 中還有別的一些經常使用的模式,它們都有:框架
依賴注入模式(DependencyInjection)dom
服務定位器模式(ServiceLocator)學習
MVC模式ui
對象池模式(Pool)
數據訪問對象模式(DAO)
流接口模式(Fluent Interface)
規約模式(Specification)
委託模式(Delegation)
Repository模式
...
經筆者的概括,Yii2用到的設計模式主要由下面的這些,根據類型可概括爲:
Yii2中設計模式,有些並不嚴格遵循《設計模式》中標準的定義和使用方法,甚至有時會表現出很大的差別性。但好在「形散而神不散」,細節雖偶有不一樣而精髓倒是同樣的。筆者將會幫助讀者發現這些」隱藏極深「的使用技巧。
雖然筆者聊的對象是Yii2框架,然而實際目的是使你們熟悉設計模式,順帶的再聊下六大設計原則。最終的目的是提高你們在實際編碼中的能力。
最後,給你們推薦一個好的開源項目 DesignPatternsPHP,對PHP全部經常使用的模式都有介紹和源碼。另外,筆者本身的開源項目 design-pattern 也介紹了 PHP 經常使用的設計模式,你們均可結合着學習下。