PHP設計模式學習最全總結

奕鵬發表於2021-06-03

專注於PHP、MySQL、Linux和前端開發,感興趣的感謝點個關注喲!!!文章整理在GitHub,主要包含的技術有PHP、Redis、MySQL、JavaScript、HTML&CSS、Linux、Java、Golang、Linux和工具資源等相關理論知識、面試題和實戰內容。

文章歸納

本文將給你分享一款超級實用的設計模式學習網站。在學習設計模式之前,首先我們需要知道為什麼學習設計模式?如何有一個正確的、高效的學習設計模式?下圖羅列出個人在學習設計模式過程中的一個大致學習思路:
Snipaste_2021-06-03_10-27-36

什麼是設計模式

設計模式是軟體設計中常見問題的典型解決方案。 它們就像能根據需求進行調整的預製藍圖, 可用於解決程式碼中反覆出現的設計問題。

設計模式與方法或庫的使用方式不同, 你很難直接在自己的程式中套用某個設計模式。 模式並不是一段特定的程式碼, 而是解決特定問題的一般性概念。 你可以根據模式來實現符合自己程式實際所需的解決方案。

人們常常會混淆模式和演算法, 因為兩者在概念上都是已知特定問題的典型解決方案。 但演算法總是明確定義達成特定目標所需的一系列步驟, 而模式則是對解決方案的更高層次描述。 同一模式在兩個不同程式中的實現程式碼可能會不一樣。

演算法更像是菜譜: 提供達成目標的明確步驟。 而模式更像是藍圖: 你可以看到最終的結果和模式的功能, 但需要自己確定實現步驟。

設計模式發展歷史

誰發明了設計模式? 這是一個很好的問題, 但也有點不太準確。 設計模式並不是晦澀的、 複雜的概念——事實恰恰相反。 模式是物件導向設計中常見問題的典型解決方案。 同樣的解決方案在各種專案中得到了反覆使用, 所以最終有人給它們起了名字, 並對其進行了詳細描述。 這基本上就是模式被發現的歷程了。

模式的概念是由克里斯托佛·亞歷山大在其著作 《建築模式語言》 中首次提出的。 本書介紹了城市設計的 “語言”, 而此類 “語言” 的基本單元就是模式。 模式中可能會包含對窗戶應該在多高、 一座建築應該有多少層以及一片街區應該有多大面積的植被等資訊的描述。

埃裡希·伽瑪、 約翰·弗利賽德斯、 拉爾夫·約翰遜和理查德·赫爾姆這四位作者接受了模式的概念。 1994 年, 他們出版了 《設計模式: 可複用物件導向軟體的基礎》 一書, 將設計模式的概念應用到程式開發領域中。 該書提供了 23 個模式來解決物件導向程式設計中的各種問題, 很快便成為了暢銷書。 由於書名太長, 人們將其簡稱為 “四人組 (Gang of Four, GoF) 的書”, 並且很快進一步簡化為 “GoF 的書”。

此後, 人們又發現了幾十種物件導向的模式。 ​ “模式方法” 開始在其他程式開發領域中流行起來。 如今, 在物件導向設計領域之外, 人們也提出了許多其他的模式。

設計模式分類

不同設計模式的複雜程度、 細節層次以及在整個系統中的應用範圍等方面各不相同。 我喜歡將其類比於道路的建造: 如果你希望讓十字路口更加安全, 那麼可以安裝一些交通訊號燈, 或者修建包含行人地下通道在內的多層互通式立交橋。

最基礎的、 底層的模式通常被稱為慣用技巧。 這類模式一般只能在一種程式語言中使用。

最通用的、 高層的模式是構架模式。 開發者可以在任何程式語言中使用這類模式。 與其他模式不同, 它們可用於整個應用程式的架構設計。

此外, 所有模式可以根據其意圖或目的來分類。 本書覆蓋了三種主要的模式類別:

  1. 建立型模式提供建立物件的機制, 增加已有程式碼的靈活性和可複用性。

  2. 結構型模式介紹如何將物件和類組裝成較大的結構, 並同時保持結構的靈活和高效。

  3. 行為模式負責物件間的高效溝通和職責委派。

通過下圖,大致羅列出如下:
Snipaste_2021-06-03_10-37-13

模式實踐

上面分享了一些關於設計模式的基礎知識。我們也對設計模式的發展史、分類等有了一定的瞭解,接著就是通過程式碼實踐了。在學習設計模式時,大家會經常遇到一個問題。

  1. 同一種設計模式在A程式語言中能夠實現,但是在B程式語言中就不知道如何實現。

  2. 初學者,由於看的書籍或者文章所用的程式語言與自己當前掌握的程式語言不符,導致增加了學習難度。

對於上面的這些問題,在該網站中,統統都幫你一一解決了。網站中有這不同的程式語言示例程式碼,滿足了絕大部分的學習者。

學習方法

在示例程式碼中,不僅僅介紹了設計模式的定義,還有邏輯圖,UML圖,實際程式碼,實用環境。同時最大的亮點是通過真實的生活環境案例,來歸納設計模式,這樣幫助理解設計模式。下圖就是設計模式示例程式碼的大致學習思路:
Snipaste_2021-06-03_10-46-10

網站地址

上面大致羅列了一些設計模式的一些基礎知識,還有網站設計模式學習的方式方法。網站的具體網址是:refactoringguru.cn/design-patterns

本作品採用《CC 協議》,轉載必須註明作者和本文連結
喜歡的,可以關注公眾號"卡二條的技術圈"。

相關文章