給初學python設計模式的pythonista
前言
從2011年5月4日買了第一本《python學習手冊》到現在,我學python已經2年多了,python也是我第一門除bash外的語言。學’設計模式’這么神秘的東西還是源于去年一次面試,在我說了我想做某個東西,然后有什么思路后,面試官很不屑的問我:你知道設計模式嘛?然后我就懵了-從來沒聽過。我特別贊賞提供良好擴展功能的項目,比如Sublime Text2, 它提供第三方插件功能,你可以使用別人開發的插件,也可以自己寫插件,讓項目更好的維護和擴展而不需要動基礎的代碼。后來換工作一直在熟悉業務,學一些東西。但是我一直記得這個’設計模式’,上個月花了一些時間去了解,所以有了此文,假如你也想了解’設計模式’,也很怕它,你會python,希望本文帶給你幫助
我也寫了一組python設計模式的文章: 小明明s Github - 設計模式
我的角度
GoF(“四人幫”,又稱Gang of Four,即Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides四人)的《設計模式》這本書我沒看過,我也不怎么會java,看不懂例子.我沒有受到其他語言的毒害(因為python是我一開始的語言),我的角度應該是最靠近python
什么是設計模式
設計模式其實是一些被很多人反復使用而總結出來的代碼設計經驗,這些技術被GOF在大概20年前編輯成《編程模式》,其實不要害怕,因為設計模式就在你寫代碼過程中已經體現了,被叫做’設計模式’只是被很好的總結出來,
python程序員的成長
-
當你初學python,可能還是翻閱手冊或者去google出一些你想要問題的答案,而后舉一反三修改它符合你想要的東西。那么這是階段一:堆代碼,這個時候主要是為了實現功能,不重視代碼編碼規范,代碼運行效率,代碼可讀性等
-
用過一段時間python,你對python很熟悉了,可以copy代碼寫東西了。那么這是階段二:碼農初長成
-
我是這樣的人:當一個類似的功能出現,我就想思考重構(重構這個詞太大了,好吧,為了減少我的代碼量);當經常出現某些相同的情況的過程,我就會思考更好的抽象出來;當項目大了,、會思考如何在不改動或者少改動的前提下更好的擴展新功能。那么這是階段三: 碼農中的憤青 這里你會對自己有更高的要求,其實總結一些更好的表達和實現,就是設計模式了
-
埋頭寫代碼畢竟進步有限,這個時候可能你會讀一些好的開源代碼,保存了很多別人的代碼片段等,你會發現:哦,原來可以這么寫.. 哇 這個實現好酷… 然后你會記下來,等以后在合適的場景里面借用這些思想, 這是階段四:在很多開源代碼中會看見一些很好的設計模式的體現,就是這樣看別人,然后理解吸收
如何學習python的設計模式
github上面有2個這方面的項目: python-patterns和Design-Patterns-in-Python, 但是都不怎么維護了當然了,做廣告,可以看我的GithubPages小明明s Github - 設計模式,都是我自己的理解,歡迎大家提意見
python的設計模式
通過我學習和寫這些模式的文章,我有很多感悟
-
對于python,裝飾器模式其實都已經是內置代碼級別;
-
flyweight模式原來還可以這樣玩;
-
NUll模式可以幫助你省去很多代碼和異常處理
-
對象池模式是一個很實用的模式
-
終于理解游戲人物設計用到了原型模式
…
基本是學了每個模式都有很深的觸動
學習設計模式有沒有必要
沒有學習設計模式不會影響你寫代碼的水平,但是學習了會提高你的代碼質量和拓寬你解決問題的思路。
來自:http://www.dongwm.com/archives/gei-chu-xue-pythonshe-ji-mo-shi-de-pythonista/