做了幾年開發(fā)泵三,最近結合設計模式對曾經(jīng)開發(fā)的項目進行了一下復盤,發(fā)現(xiàn)了很多可以從設計層面進行改進的地方衔掸,以及修正了對設計模式本身的理解偏差烫幕,故進行了這次手擼設計模式的實踐。
github倉庫完整代碼示例:https://github.com/catwrench/PhpPatterns
- 運行測試
./vendor/bin/phpunit
創(chuàng)建型模式實例
- 單例模式 ?
- 工廠模式 ?
- 抽象工廠模式 ?
- 簡單工廠模式 ?
- 靜態(tài)工廠模式 ?
- 原型模式 ?
- 建造者模式 ?
結構型模式實例
- 橋接模式 ?
- 享元模式 ?
- 外觀模式 ?
- 適配器模式 ?
- 裝飾器模式 ?
- 組合模式 ?
- 代理模式 ?
- 過濾器模式 ?
行為型模式實例
- 模板模式 ?
- 策略模式 ?
- 狀態(tài)模式 ?
- 觀察者模式 ?
- 責任鏈模式 ?
- 訪問者模式 ?
- 解釋器模式 ?
- 備忘錄模式 ?
- 命令模式 ?
- 迭代器模式 ?
- 中介者器模式 ?
- 空對象模式 ?
創(chuàng)建型模式實例
創(chuàng)建型模式用來處理對象的創(chuàng)建過程。對類的實例化過程進行了抽象,將對象的創(chuàng)建和使用分離芋肠。
在使用這些對象時只需要知道接口裤翩,而不用關心細節(jié)
結構型模式實例
結構型模式用來處理類或者對象的組合。把類或?qū)ο笸ㄟ^各種方式進行組合乌昔,形成一個更大的結構,以完成更為復雜的任務
行為型模式實例
行為型模式用來處理類或?qū)ο蟮慕换リP系。用于描述類或?qū)ο笾g怎樣相互協(xié)作共同完成單個對象無法勝任的任務萍歉,
以及怎樣分配職責類和對象如何交互,及劃分責任和算法,這些設計模式特別關注對象之間的通信档桃。
SOLID原則
單一責任原則:一個類只做一件事兒翠桦,多的進行拆分交給其他類
開放封閉原則:對擴展開放,對修改封閉。 實例的內(nèi)部不可修改销凑,但可以通過繼承等方式增加新功能
依賴倒置原則:對接口編程丛晌,依賴于抽象而不依賴于具體。公共部分抽離為接口斗幼、抽象類澎蛛,大家再去實現(xiàn)這個接口,而不是互相依賴蜕窿。
接口隔離原則:使用多個接口谋逻,而不是對一個接口編程,去依賴降低耦合
里氏替換原則:超類(父類)出現(xiàn)的地方桐经,派生類(子類)都可以出現(xiàn)毁兆。父類能做的子類也能做,反之不一定