1. 程式人生 > >5本最佳的Java面向物件理論和設計模式的書籍

5本最佳的Java面向物件理論和設計模式的書籍

對於Java程式設計師來說,掌握面向物件的設計理論和一些設計模式是必備技能。就像我在另一篇部落格Java程式設計師應該知道的10個面向物件理論中提到的,不學理論就開始程式設計,就類似於學習一種語言而不學習字母表。市面上有很多有關面向物件理論的、設計模式的和最佳實踐的,但只有很少的書真正值得我們閱讀。這裡涉及兩件事情,一個是面向物件理論,一個是設計模式。前者是基礎,後者是在基於基礎的最佳實踐。我們應該先學習面向物件理論,再學習設計模式,來看看這些理論是如何幫助我們解決日常碰到的問題的。我為大家選擇了以下的五本書,幫助大家學習面向物件理論和設計模式。這些書從淺到深。J2EE的設計模式和核心Java設計模式有一點點區別,但對Java程式設計師來說,核心的J2EE設計書籍也是學習的一個不錯的選擇。

有關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 JavaHead 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 PracticeEffective 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模式不僅能幫助你理解前人寫的程式碼,也能讓你寫出更容易維護的程式碼。