Sponsored Link •
Here's a list of design-related books I recommend for all programmers.
Each entry is linked to
the page at Amazon.com where you can order the book online.
Design Patterns, by Erich Gamma, et. al., is a very important work. It describes 23 patterns that occur again and again in object oriented designs. My familiarity with the patterns in this book have helped me repeatedly in my own software designs. If you buy just one design book, I recommend it be this one.
Categories on this Page
Books about Design Patterns
Java and OO Design Books
Books about Coding
Books about UML
Works in Progress
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Also know as the "Gang of Four")
This, the grandaddy of all Design Patterns books, is my favorite design book. It describes 23 design patterns common to object oriented programs. Its examples are in C++ and Smalltalk, but it is very practical for Java programmers. In fact, many of the patterns in this book are incorporated into the architecture of the Java API. If you buy one design book, it should be this one.
Software Architecture: A System of Patterns
Frank Buschmann, Regine Meunier, Hans Rohnert, and pet Sommerlad
This book contains 25 useful patterns for software architectures. The patterns in this book are higher level than the Gang of Four book. These patterns will help you structure systems, whereas the Gang of Four book's patterns will help you structure the individual components of systems.
Programming in Java: Design Principles and Patterns
This book is full of design patterns for multi-threaded Java programming. The writing is a bit formal, but the content is very practical for Java programmers. If you really want to get to know multi-threaded programming in Java, you probably want to get to know this book.
Languages of Program Design, Volume I
James Coplien and Doug Schmidt
If you are really into patterns, try this three volume series of design patterns for software. Volume II is edited by John Vlissides, James Coplien, and Normal Kerth. Volume III is edited by Robert Martin, Dirk Riehle, and Frank Buschmann.
Pattern Language: Towns, Buildings, Construction
This book is not about design patterns in software architecture, it's about design patterns in the architecture of buildings. This is the book that gave the whole design patterns movement its start. Very interesting reading.
in Practice: Design Styles and Idioms for Effective Java
Nigel Warren and Phil Bishop
This book includes three chapters on each of abstraction, encapsulation, and polymorphism, plus several guidelines and idioms for Java program design and construction. If you are interested in the material in my Design Techniques column, you'd probably like this book.
Design: Building Better Apps and Applets
Peter Coad and Mark Mayfield
This book discusses design strategies very pertinent to the Java language itself. It talks about using composition versus inheritance, using interfaces, designing with threads, and designing with notification (such as the observer/observable pattern.) Although it is difficult reading (it has the feel of a book that was rushed to market), it contains good insights for Java programmers willing to work through it.
This book is an excellent and comprehensive survey of object-oriented programming. It is not specific to Java, but very applicable to Java, as Java programmers should have a good foundation in object-oriented principles.
Software Solutions: Foundations of Program Design
John Lewis and William Loftus
This is a textbook on object-oriented programming in Java geared for beginning programmers.
and Systems: Principled Design With Implementations in C++ and Java
Bernard P. Zeigler
This is an undergraduate textbook on object-oriented programming geared for beginning programmers with examples in both C++ and Java.
of Object-Oriented Programming in Java 1.1: The Practical Guide
to Effective, Efficient Program Design
James W. Cooper
This is a general text on Java program design.
Complete: A Practical Handbook of Software Construction
This is a very practical guide to software development process. This book explains how to get the most out of a software team without sacrificing quality of work or quality of life. Filled with simple, proven strategies that keep projects on track. A very readable, anecdotal format.
Mythical Man Month
Frederick P. Brooks, Jr.
This is one of the classic texts on the people management aspects of software project management.
Distilled: Applying the Standard Object Modeling Language
Martin Fowler with Kendall Scott
This 178 page book gives a good, to-the-point introduction to UML essentials.
The Precise Object: Best Practices in Object-Oriented Design with Java
This work-in-progress is one of my current writing projects.