超級實用的編程設計模式學習網站

專注於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

網站地址

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章