這篇文章將為大家詳細講解有關PHP設計模式的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
專注于PHP、MySQL、Linux和前端開發,感興趣的感謝點個關注喲?。?!文章整理在GitHub,主要包含的技術有PHP、Redis、MySQL、JavaScript、HTML&CSS、Linux、Java、Golang、Linux和工具資源等相關理論知識、面試題和實戰內容。
本文將給你分享一款超級實用的設計模式學習網站。在學習設計模式之前,首先我們需要知道為什么學習設計模式?如何有一個正確的、高效的學習設計模式?下圖羅列出個人在學習設計模式過程中的一個大致學習思路:
設計模式是軟件設計中常見問題的典型解決方案。 它們就像能根據需求進行調整的預制藍圖, 可用于解決代碼中反復出現的設計問題。
設計模式與方法或庫的使用方式不同, 你很難直接在自己的程序中套用某個設計模式。 模式并不是一段特定的代碼, 而是解決特定問題的一般性概念。 你可以根據模式來實現符合自己程序實際所需的解決方案。
人們常常會混淆模式和算法, 因為兩者在概念上都是已知特定問題的典型解決方案。 但算法總是明確定義達成特定目標所需的一系列步驟, 而模式則是對解決方案的更高層次描述。 同一模式在兩個不同程序中的實現代碼可能會不一樣。
算法更像是菜譜: 提供達成目標的明確步驟。 而模式更像是藍圖: 你可以看到最終的結果和模式的功能, 但需要自己確定實現步驟。
誰發明了設計模式? 這是一個很好的問題, 但也有點不太準確。 設計模式并不是晦澀的、 復雜的概念——事實恰恰相反。 模式是面向對象設計中常見問題的典型解決方案。 同樣的解決方案在各種項目中得到了反復使用, 所以最終有人給它們起了名字, 并對其進行了詳細描述。 這基本上就是模式被發現的歷程了。
模式的概念是由克里斯托佛·亞歷山大在其著作 《建筑模式語言》 中首次提出的。 本書介紹了城市設計的 “語言”, 而此類 “語言” 的基本單元就是模式。 模式中可能會包含對窗戶應該在多高、 一座建筑應該有多少層以及一片街區應該有多大面積的植被等信息的描述。
埃里?!べが?、 約翰·弗利賽德斯、 拉爾夫·約翰遜和理查德·赫爾姆這四位作者接受了模式的概念。 1994 年, 他們出版了 《設計模式: 可復用面向對象軟件的基礎》 一書, 將設計模式的概念應用到程序開發領域中。 該書提供了 23 個模式來解決面向對象程序設計中的各種問題, 很快便成為了暢銷書。 由于書名太長, 人們將其簡稱為 “四人組 (Gang of Four, GoF) 的書”, 并且很快進一步簡化為 “GoF 的書”。
此后, 人們又發現了幾十種面向對象的模式。 “模式方法” 開始在其他程序開發領域中流行起來。 如今, 在面向對象設計領域之外, 人們也提出了許多其他的模式。
不同設計模式的復雜程度、 細節層次以及在整個系統中的應用范圍等方面各不相同。 我喜歡將其類比于道路的建造: 如果你希望讓十字路口更加安全, 那么可以安裝一些交通信號燈, 或者修建包含行人地下通道在內的多層互通式立交橋。
最基礎的、 底層的模式通常被稱為慣用技巧。 這類模式一般只能在一種編程語言中使用。
最通用的、 高層的模式是構架模式。 開發者可以在任何編程語言中使用這類模式。 與其他模式不同, 它們可用于整個應用程序的架構設計。
此外, 所有模式可以根據其意圖或目的來分類。 本書覆蓋了三種主要的模式類別:
創建型模式提供創建對象的機制, 增加已有代碼的靈活性和可復用性。
結構型模式介紹如何將對象和類組裝成較大的結構, 并同時保持結構的靈活和高效。
行為模式負責對象間的高效溝通和職責委派。
通過下圖,大致羅列出如下:
上面分享了一些關于設計模式的基礎知識。我們也對設計模式的發展史、分類等有了一定的了解,接著就是通過代碼實踐了。在學習設計模式時,大家會經常遇到一個問題。
同一種設計模式在A編程語言中能夠實現,但是在B編程語言中就不知道如何實現。
初學者,由于看的書籍或者文章所用的編程語言與自己當前掌握的編程語言不符,導致增加了學習難度。
對于上面的這些問題,在該網站中,統統都幫你一一解決了。網站中有這不同的編程語言示例代碼,滿足了絕大部分的學習者。
在示例代碼中,不僅僅介紹了設計模式的定義,還有邏輯圖,UML圖,實際代碼,實用環境。同時最大的亮點是通過真實的生活環境案例,來歸納設計模式,這樣幫助理解設計模式。下圖就是設計模式示例代碼的大致學習思路:
上面大致羅列了一些設計模式的一些基礎知識,還有網站設計模式學習的方式方法。網站的具體網址是:refactoringguru.cn/design-patterns
關于“PHP設計模式的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。