"Design Patterns" is a classic that describes simple and effective solutions to common problems in object-oriented software design. The book, written in a catalog format, provides examples of how design patterns can improve the software design, together with reusability and flexibility of code. The authors describe the intent of the pattern, motivation, applicability, structure, participants, collaborations, consequences, and implementation considerations. They provide detailed sample code, known users of that pattern, and a list of related patterns. Authors Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides--frequently referred to as "The Gang of Four"--separate these patterns into creational, structural, and behavioral categories.
The first two chapters of this book introduce the pattern-based design world, while the rest present a catalog of design patterns. "Design Patterns" is most helpful for the skilled software developer or architect, especially on relatively large projects. Multiple diagrams--most UML based--make the design concept for a specific, easy-to-understand pattern, and every pattern description is accompanied by code samples in C++ or Smalltalk.
The author uses a common vocabulary, which if implemented, encourages effective communication with peers in the design and development field. This book creates a pattern-based mindset, which, once adopted, stays with a developer forever. The authors set the groundwork for pattern-based design, making this book a "must have" book on a developer’s desk.
I recommend this book to experienced developers or architects who need to look up specific cases and patterns related to their design challenges, yet the less-experienced developer should also find this book helpful because it sets a pattern-based direction and can be used as a guidebook.