Python 中最簡最好的設計模式

大勢所趨,Python 已然成風


C語言誕生於1972年,確隨着 Unix 的誕生才深深植根於各大操作系統;


C++誕生於1983年,確因微軟的可視化桌面操作系統才得以廣泛傳播;


Java 誕生於1995年,確因互聯網的迅速崛起才變得家喻戶曉;


Python 誕生於1991年,而下一場技術革命已然開始,AI 時代已然成風。在 AI 領域中已經被廣泛使用的 Python 必將成爲下一個時代的第一開發語言!


最熱門的 AI 開源框架 PyTorch 和 TensorFlow 都已經採用了 Python 作爲接口和開發語言。


除此之外,還有一堆的 AI 相關的框架庫,也都紛紛採用,如 AIMA、pyDatalog、SimpleAI、PyBrain、PyML 等。


語言的熱門程度一直是程序員持續關注的話題,也是衆多初學者的糾結之處;畢竟,如果學習了一門冷門的技術,不但英雄無用武之地,而且在求職市場上也沒有什麼優勢。


2018 年的 TIOBE 編程語言排行榜中,Python在衆多的計算機語言中已經穩穩排名第四了,而且還有大幅上升的趨勢( 2017 年排名第 5 )。


作爲這麼一門有前途也有錢途的語言,還有什麼理由不去學習和掌握呢?


學了 Python 爲什麼還要學設計模式


要成爲一名優秀的程序員,只掌握一門編程語言是不夠的;還需要學習完成一個大型實際項目所需的更多技能:


如何組織代碼

面向對象設計

數據結構和算法

數據庫基礎知識

構建和部署

優良的代碼組織結構需要依賴團隊制定的編程規約、長期養成的編程習慣、及不斷積累的技術經驗。


面向對象設計是一種設計複雜程序的方法,它將代碼分成了單獨的類和對象(類的實例),這些類和對象封裝了一些特定的功能。


要更深入地理解面向對象的設計思想,則需要學習設計模式,設計模式是面向對象思想的高度提煉和模板化。


因此掌握設計模式,是寫出高質量代碼的必備要素!掌握設計模式,理解面向對象的編程思想,將會使您的代碼更具可讀性,更易拓展和更可維護。


什麼是設計模式?


設計模式最初是被 GoF 於1995年提出的。GoF 全稱是 Gang of Four(四人幫),即 Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides。


他們四人於1995年出版了一本書《Design Patterns: Elements of Reusable Object-Oriented Software》(翻譯成中文是《設計模式 可複用面向對象軟件的基礎》),第一次將設計模式提升到理論高度,並將之規範化。該書提出了23種經典的設計模式。


設計模式(Design pattern)是一套被反覆使用、多數人知曉的、無數工程師實踐的代碼設計經驗的總結,它是面向對象思想的高度提煉和模板化。



使用設計模式是爲了讓代碼具有更高的可重用性,更好的靈活性和可拓展性,更易被人閱讀和理解。


爲什麼要學設計模式?


設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。這些解決方案是衆多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。所以不管你是新手還是老手,學習設計模式對你都有莫大的幫助。


學習設計模式的理由有很多,我這裏只列出幾個最實現的:


擺脫面試的窘境,不管你是前端工程師還是後端工程師,亦或是全端工程師,設計模式都是不少面試官必問一道題。

讓你的程序設計能力有一個質的提升,不再是寫一堆結構複雜,難以維護的爛代碼。

讓你的程序更健壯、更靈活、可複用。

使你對面向對象的思想有一個更高層次的理解。

Python 中最簡最好的設計模式


設計模式於1995被 GoF 提出,被廣泛應用於熱門的面對象語言。目前用Java、C++ 描述的設計模式的書籍和資料已經非常多了,但用 Python 來描述的真是太少了;


我在噹噹上搜索了一下“Python 設計模式”,只有那零星的幾本書,而且大部分是國外的書,翻譯過來後都變味了。


Python 中講設計模式的書籍和資料非常少,當然有一些其自身的原因:


相較於Java和C++而言,Python是一門解釋 類型的語言,本身對數據類型的支持非常靈活多變。


Python本身具有非常好的靈活性和良好的封裝性,使得其自帶了很多的功能,已經把一些模式融入到自己的語言特性了。


但這不代表學習Python的你就不需要了解設計模式了,原因有如下:


Python具有良好的設計,但總會有一些複雜的需求,語言特性本身難以支撐,這個時候就需要考慮一些設計模式了。


設計模式是一種編程思想,他和語言沒有強關聯,能適用於所有面向對象的語言,學習設計模式能讓你對面向對象的思維有更深入的瞭解。能更容易理解一些框架的設計,能讀懂更多開源代碼(很多優秀的開源項目,本身應用了大量的設計模式)。


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