设计模式前言
設計模式前言
知道設計模式這玩意其實好幾年了,但是因為長期用C做驅動方面的工作,與它少有交集.新項目基于Windows平臺開發VR項目,基本上用C++敲代碼,接著基于openVR做驅動,官方提供的demo,從代碼結構來說,不是很規范,VR目前最大的痛點,個人覺得是在內容和外設上,目前的openVR提供的代碼,擴展外設蹩腳,打算用點設計模式的方法整理一下,做好接口,畢竟很多外設還是需要第三方來提供,同時1月份老大出去參加CES了,沒安排什么具體的事情, 難得有一周的清閑時間可以做自己想做的事情.原本安排的是每天8小時,10天完成的計劃,但是后來大大超出了預期,設計模式看起來好像都懂,但是自己實現時候就會出現很多問題,需要花時間去消化,1月份上班搞了20天+,下班在家搞,過年還搞了幾天,還是有所收獲,接下來時間打算把這些記錄下來,一方面加深理解,另一方便以后用的時候有地方找.
PS:不要小看整理的力量,設計模式圣經的書籍Design Patterns,其中記錄的各種各樣色設計模式并不是GOF創造出來的,而是收錄/整理了許多優秀程序員的杰作而成的.
為什么要學習設計模式
- 站到巨人肩上
如GOF的DP上所描述:”不是解決任何問題都要從頭做起。他們更愿意復用以前使用過的解決方案。當找到一個好的解決方案,他們會一遍又一遍地使用。這些經驗是他們成為內行的部分原因。因此,你會在許多面向對象系統中看到類和相互通信的對象的重復模式。這些模式解決特定的設計問題,使面向對象設計更靈活、優雅,最終復用性更好。它們幫助設計者將新的設計建立在以往工作的基礎上,復用以往成功的設計方案。一個熟悉這些模式的設計者不需要再去發現它們,而能夠立即將它們應用于設計問題中。”,所以,不要去費力的創建一個別人已經創造好的輪子了.想想畢業多年之后,所謂的成長,更多的是學會了做事的套路,設計模式可以看成是代碼里的優秀的套路,有利于代碼的復用,復用,復用! - 利于團隊溝通、協作、維護
當需要與其他同事完成某個項目或模塊時,實現的方法和規則多種多樣,因人而異,而且咱們多數的程序員同胞,很多情況下比較堅持自己的方法(設計初期是沒辦法復現出bug,然而沒有把bug復現出來,咱們一般是死都不會低頭的~,當然對方級別比你高時例外)……多人協作時,使用科學的、廣為人知的方法和通用術語,將會減少溝通的成本和出錯的可能。也便于其他人接手,維護過別人一時興起所寫的代碼的人,那個痛,不多說。 - 利于理解當前和以后優秀項目
這些設計模式被廣泛的使用到各種各樣的大型項目中去,當你在閱讀新項目代碼時,會看到很多設計模式的影子,當你知道它使用了某個你所知的設計模式時,你會很快的理解這部分代碼,而不需要從頭閱讀。 - 創建優秀的代碼
設計模式貢獻并不僅僅是提出了書上所列出的6大設計模式和23種設計方法,它最大的價值在于培養你有意識的去創建高效、穩定、可復用、易擴展的代碼,因為這些設計模式的數量不僅于此,結構和形式隨著時間的推移會有所變化。 - 其他你可能喜歡的用處
裝B,加薪……
設計模式是什么
//每個設計模式描述了在我們開發中一遍又一遍遇到的問題,描述問題的解決方案的核心,你可以重復利用這樣的解決方案(設計模式). "Each pattern describes a problem which occurs over and over again in our environment,and then describes the core of the solution to that problem, in such a way that you canuse this solution a million times over, without ever doing it the same way twice"設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結(并不僅限于書中所指的23種),一般而言,一個設計模式包含四個要素:模式名稱、何時使用、組成部分、效果.一個設計模式命名、抽象和確定了一個通用設計結構的主要方面,這些設計結構能被用來構造可復用的面向對象設計。設計模式確定了所包含的類和實例,它們的角色、協作方式以及職責分配。每一個設計模式都集中于一個特定的面向對象設計問題或設計要點,描述了什么時候使用它,在另一些設計約束條件下是否還能使用,以及使用的效果和如何取舍.最主要的思想包含2點:
1.對接口編程.
2.組合優于繼承.
設計模式如何學習
這里記錄一下自己學習時候學習的一些資料,打包上傳到這里了,大小限制的原因,分成2部分上傳CSDN(設計模式書籍合集part1,設計模式書籍合集part2)
- DesignPatterns
設計模式最權威的書籍之一,附件提供中英文版,建議閱讀英文版本,代碼使用的語言是smalltalk和C++,,缺點是舉的例子不太容易理解. - 大話設計模式
通俗版本的設計模式書籍,通過大鳥和小菜的生活對話的方式來介紹設計模式,容易理解,快速上手,缺點是反復分析時,要反復看他故事部分的內容,是蠻費勁的,這本書的例子使用C#實現代碼,附錄提供書籍. - 設計模式之禪
與<大話設計模式>類似,難度介于原版之下,大話設計模式之上,例子結合實際項目,所有例子用JAVA實現,附錄提供書籍 - 圖說設計模式
這個鏈接介紹了常用的設計模式和這些模式的UML圖,優點是簡潔,缺點是不完整,實現上存在一些不足. - 其他鏈接
推薦2個老外的設計模式資料鏈接,Source Make之design patterns,tutorials point之design pointerns
最好的學習方法就在學習之后,將所學的知識應用到實際當中,實踐出真知嘛.最近迷上了長跑,后續會將多數設計模式應用到跑步的場景當中,加深理解,另外正如設計模式作者所述那樣不要希望在第一次閱讀后就能完全掌握,需要不斷的學習,理解,運用:
后續每個設計模式分為該設計模式的介紹、實例、UML圖、結構、優點、缺點6個部分,每個設計模式都提供源代碼以及CMakeLists,可以在Visual Studio編譯器運行和調試,另外,UML圖將用”Enterprise Architect”工具生成,然后修改,修改后的EA工程同時也會上傳。
總結
- 上一篇: 一天大数据生活
- 下一篇: JavaWeb学习笔记(XML语言)