學習設計模式,就是讀圣賢書
什么是設計模式?
設計模式是軟件設計中常見問題的典型解決方案,可用于解決代碼中反復出現(xiàn)的設計問題。
所以,學習設計模式就是學習經(jīng)驗,學習經(jīng)驗教訓,最難的是感同身受。如果還是使用學習語法、算法的方法來學習,很容易迷失。就像小學生參加情感話題的講座,也不能說完全聽不懂,但總感覺學了也記不住,更別說活學活用了。
設計模式還是軟件開發(fā)人員的專業(yè)術語,有著類似成語的功能。軟件公司內部開會討論的時候,或是寫文檔、寫代碼注釋的時候都能用得上。短短幾個字,就能替代一連串繁瑣的描述。就像說亡羊補牢的時候對方會知道你要表達的是“出了問題以后想辦法補救,免得以后繼續(xù)受損失,雖然不能挽回損失,但可以減少或杜絕以后再發(fā)生類似的狀況?!?/p>
毫不夸張的說,對于應用程序軟件工程師來說,不懂設計模式就是還沒入行,畢竟連行話都還聽不懂。學各種框架也只能死記硬背,因為自己還不具備基本的架構能力。
如何學習設計模式?
首先要能感同身受,要站在產(chǎn)品設計人員的角度去考慮問題。要認同軟件的維護比軟件的開發(fā)更難,對于軟件產(chǎn)品來說,唯一不變的就是變換,客戶總是認為軟件沒有材料的限制,所以會肆無忌憚的提成各種修改意見和升級要求。
要相信金典的設計模式會真正幫助到你,就像是讀圣賢書能夠懂得做人的道理,可以少走彎路。學習設計模式能夠在今后的開發(fā)過程中幫你解決編碼過程中常見的一些設計問題。

設計模式背后的面向對象設計原則比模式本身更重要。很多教程把設計原則放到開頭講解,我個人感覺這樣效果不好。更適合放到具體的設計模式之后,用于總結,鞏固知識,就行《Head First設計模式》這本書里做的一樣。
?封裝變化
?多用組合,少用繼承
?針對接口編程,不針對實現(xiàn)編程
?為交互對象之間的松耦合而努力
?對擴展開放,對修改關閉
依賴抽象,不要依賴具體類
只和朋友交談
別找我,我會找你
類應該只有一個改變的理由

學習具體設計模式的時候要尊重原著,注意細節(jié),還沒有到活學活用的時候。學習過程中,自己寫代碼的時候,需要嚴格比對模式的類圖。每個設計模式都有它的明確的意圖,只有注意細節(jié)才能能夠區(qū)分。
