(點選上方公眾號,可快速關註)
來源:ImportNew – 唐小娟
對於Java程式員來說,掌握面向物件的設計理論和一些設計樣式是必備技能。就像我在另一篇部落格Java程式員應該知道的10個面向物件理論中提到的,不學理論就開始程式設計,就類似於學習一種語言而不學習字母表。市面上有很多有關面向物件理論的、設計樣式的和最佳實踐的,但只有很少的書真正值得我們閱讀。這裡涉及兩件事情,一個是面向物件理論,一個是設計樣式。前者是基礎,後者是在基於基礎的最佳實踐。我們應該先學習面向物件理論,再學習設計樣式,來看看這些理論是如何幫助我們解決日常碰到的問題的。我為大家選擇了以下的五本書,幫助大家學習面向物件理論和設計樣式。這些書從淺到深。J2EE的設計樣式和核心Java設計樣式有一點點區別,但對Java程式員來說,核心的J2EE設計書籍也是學習的一個不錯的選擇。
http://javarevisited.blogspot.hk/2012/03/10-object-oriented-design-principles.html
有關Java設計樣式的最好的五本書
以下是我學習面向物件和設計樣式的書籍清單。設計樣式是前人在解決某些相似問題時總結出的最佳實踐。下麵的五本書也適用於其他的面向物件語言。如果你知道其他優秀的設計樣式的書籍,請推薦給我們。
1. Head First Design Patterns by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson
這是我讀到的第一本Head First系列的書,也是第一本面向物件的書,在此之前,我不知道如何使用抽象類和介面,我也不知道為什麼組合比介面要好。在最初的幾年開發中,我往往根據需求來編寫程式碼,然而在更多的改動,更多的測試之後,往往引入更多的bug。多虧了我的好學精神,我了發現Head First Design Pattern。讀了第一節之後,我感到非常的愉悅。可以說這本書很基礎,但是其實學習基礎比學習高階的東西更難。這本書真正做到了教會我們基礎。它是每一個Java程式員必讀的設計樣式書籍,包括經驗豐富的資深程式員。我也建議學習設計樣式就應該從這本書開始。它不僅用清晰的方法解釋了概念,還給出了很多圖表,練習,測試以及活生生的例子來幫助你思考和吸收。我是head first系列書籍的超級粉絲,就是因為Head First Java和Head First Design Pattern。Head First Design Pattern中有很多很棒的例子,任何想要學習面向物件基礎的人(譬如介面,封裝,多型,抽象等)都應該讀讀這本書。其中裝飾樣式(Decorator design pattern)和觀察者樣式(Observer design pattern)是非常好的兩個章節。
2. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
這是四人幫(GOF)的經典設計樣式的書籍,它也是很多其他的面向物件設計樣式書籍所借鑒的物件。如果關於設計樣式的必讀清單上沒有這本書,那便是不完整的。出版了接近20年之後,這本書的主題依然緊貼面向物件和設計樣式理論。這本書圍繞著設計一個檔案編輯器的例子,分別解釋了多種設計樣式,如Creational patterns, Structural and Behavioral patterns。個人淺見,這本書是最好的設計樣式書籍。對於每個Java程式員來說,這本書以及Java concurrency in Practice和Effective Java都是必讀書籍。你可以從亞馬遜上購買這本書,有紙質版的,也有多媒體CD。
3. Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition) by Alan Shalloway, James R. Trott
就像多執行緒和併發一樣,設計樣式也不容易理解。其中最困難的部分就是理解之後應用到真實的例子中去。這就是為什麼要多讀幾本Java的設計樣式的書,非常值得這麼做。因為對於某些程式員來說,某個作者的寫作風格比其他作者更易讀。但是Joshua Bloch是個例外,他的寫作風格被部分程式員都適用。《Design Patterns Explained: A New Perspective on Object-Oriented Design》這本書是學習面相物件設計樣式的另一本書。雖然它也沒有什麼新內容,也介紹了面向物件理論,UML以及裝飾者樣式、工廠樣式、觀察者樣式等設計樣式。但是它對於很多初學者來說更通俗易懂。這本書裡的例子也非常棒。
4. Software Architecture Design Patterns in Java by Partha Kuchana
這是這個主題的又一本書,它不僅涵蓋了所有的面向物件基礎(類,物件,繼承,多型,抽象,封裝),也包括了一些實用但不明顯的細節,譬如私有方法,getter和setter方法,不可變物件,介面和監視器(monitor)。這本書還有一些更深入的面向物件的知識,如建立樣式(Creational patterns), 集合樣式(Collection patterns), 結構樣式(Structural patterns), 行為樣式(Behavioral patterns),和併發(Concurrency patterns)。對於工廠樣式和單例樣式的講述也很有趣。我喜歡這本書的另一個原因在於,有很多實用的問題和UML圖表,這樣不僅能更深入的理解問題,也可以在實際應用方面有所幫助,實用也正是學習設計樣式最重要的作用。最後這本書透過為網路主機公司設計軟體的實體學習,來讓我們將設計樣式應用在真實的場景中。簡而言之,《Software Architecture Design Patterns in Java》可以幫助你全面學習設計樣式。
5. Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition) by Deepak Alur, Dan Malks, and John Crupi
J2EE平臺是Java程式語言的最流行的開發方法,它主要專註於解決網路和企業的問題,有一套自己的問題和需求。核心的J2EE樣式描述了一些最有用的J2EE世界的設計樣式,譬如攔截過濾器(Intercepting Filters),前端控制器(Front Controller),MVC樣式,資料訪問物件樣式(Data Access Object, DAO Pattern),檢視協助器樣式(View Helper Pattern)或檢視解析器(View Resolver Pattern),服務定位樣式(Service Locator Pattern)等。這本書將設計樣式按照功能分類,分為表示層的設計樣式、邏輯層的設計樣式等。對於每一個需要編寫網路應用和企業應用的Java和J2EE程式員來說,這都是一本必讀書籍。雖然現代的框架如Spring已經確保你在框架的層次接觸到這些J2EE設計樣式,譬如Spring MVC確保了MVC的使用,它也同時使用了前端控制器(DipatcherServlet)和檢視解析器(ViewResolver)。同時Spring框架還在容器層保證使用依賴註入和IOC。總之,不管你使用Spring MVC, Structs還是其他web框架,學習J2EE樣式不僅能幫助你理解前人寫的程式碼,也能讓你寫出更容易維護的程式碼。
除了以上的五本書,你可以看看Joshua Bloch的Effective Java第二版以及Head first object oriented analysis and design,你能知道更多面相物件的理論以及如何應用在Java程式設計中。Effective Java是Java程式員必讀書籍,因為它解釋了很多Java庫如何設計的原理。
看完本文有收穫?請轉發分享給更多人
關註「ImportNew」,提升Java技能