Thinking in Patterns (with Java)
One of the most important steps forward in object-oriented design is the Design Patterns movement, chronicled in Design Patterns, by Gamma, Helm, Johnson & Vlissides (Addison-Wesley 1995). That book shows 23 different solutions to particular classes of problems, primarily written in C++. The Design Patterns book is a source of what has now become an essential, almost mandatory, vocabulary for OOP programmers. Thinking in Patterns introduces the basic concepts of design patterns along with examples in Java. The book is not intended to be a simple translation of Design Patterns, but rather a new perspective with a Java mindset. It is not limited to the traditional 23 patterns, but also includes other ideas and problem-solving techniques as appropriate.
This book began as the last chapter in Thinking in Java, 1st Edition, and as ideas continued to develop it became clear that it needed to be its own book. At the time of this writing it is still in development, but the material has been worked and reworked through numerous presentations of the Objects & Patterns seminar (which has now been split into Designing Objects & Systems and the Thinking in Patterns seminars).