設計模式便是分析過的問題和問題解決方案所闡釋的優秀實踐。如何處理乙個請求?如何將請求資料轉換成系統對應的指令?如何獲得資料?如何顯示結果?等等。隨著時間流逝和經驗積累,我們會或優雅或困難地回答問題,並總結出一些非正式的、可在專案中重複使用的解決方案,而這些解決方案便是設計模式。
設計模式記錄並規範了這些問題及解決方案,使更廣泛的開發社群可獲得這些來之不易的經驗。模式在本質上講是自下而上而非自上而下的。它們來自實踐而非空洞的理論。
恰當地為乙個模式命名是很有意義的,因為模式命名象徵著長期的專業過程中自然形成的公認的詞彙表。這樣的簡寫名稱大大促進了軟體設計的合作,並且它們的結論是經過量化和測試的。
乙個設計模式的核心由四部分組成:命名、問題、解決方案和效果。
其主要組成部分如下所示:
模式可以幫助解決共性的問題。當然,模式還能帶來更多好處。
深入PHP物件導向 模式與實踐 模式原則(1)
通過以靈活的方式來組合物件,元件能在執行時被定義。設計模式 將此提煉出乙個原則 組合優於繼承。繼承是應對變化的環境及上下文設計的有效方式,然而它會限制靈活性,尤其是當類承擔了過多的責任的時候。利用這種繼承模式,我們可以在課程的實現之間切換。可是如果引入一組新的特殊性,又會怎麼樣?比如我們需要處理演講...
深入PHP物件導向 模式與實踐 模式原則(2)
如果類之間有非常強的依賴性,那麼這樣的系統就很難維護,因為系統裡的乙個改動會引起一連串的相關改動。重用性是物件導向設計的主要目的,而緊耦合便是它的敵人。當我們看到系統中乙個元件的改變迫使系統其他許多地方也發生改變的時候,就可以診斷為緊耦合了。在你自己的專案中,你會看到很多這種需要分離元件的情況。例如...
深入PHP物件導向 模式與實踐 企業模式(3)
前端控制器模式用乙個中心來處理所有到來的請求,最後呼叫檢視來將結果呈現給使用者。前端控制器模式定義了乙個中心入口,每個請求都要從這個入口進入系統。前端控制器處理請求並選擇要執行的操作。系統中的控制器複製分配任務給其他。其他類完成了絕大部分實際工作。前端控制器通常通過執行乙個command物件來呼叫應...