Ratings33
Average rating4.1
A catalog of solutions to commonly occurring design problems, presenting 23 patterns that allow designers to create flexible and reusable designs for object-oriented software. Describes the circumstances in which each pattern is applicable, and discusses the consequences and trade-offs of using the pattern within a larger design. Patterns are compiled from real systems, and include code for implementation in object-oriented programming languages like C++ and Smalltalk. Includes a bibliography. Annotation copyright by Book News, Inc., Portland, OR
Reviews with the most likes.
What the book is about
Have you ever heard of design patterns? These are essential elements of object-oriented programming, and every programmer should know them.
The book will introduce you to this notion of design patterns. You will discover what they are, why every programmer should know them, how they can improve your programming, etc...
Then, the book will cover in a structured way and in detail each of the design patterns.
My thoughts
I think this book is good. But, there is too much information about each of the design patterns. It's impossible to remember everything or to take note of everything.
That's why I see this book more as a cheatsheet, or something you open only when you have a specific need and you want detailed information about something. In this case, if I want information about the Visitor pattern, I just open the book and I will find everything I need.
Also, this book is a lot theoretical. It includes some code examples, but not a lot. This is neither good nor bad because it meets different needs.
Who should read it
I think every programmer who has never heard about design patterns should read it. If you have ever heard of design patterns, it's not so useful to read this book, but it's useful to own it so that if you need information about one design pattern one day you can just find all the information you need in the book.
This is considered a bible for OO design by some. This book defines many common design patterns. The book begins with a case study that attempts to illustrate how the decision to apply a particular design pattern came into play, which was a nice touch. The subsequent chapters each deal with a design pattern, grouped by its type, that describes the problem and solution followed by benefit-cost analysis and some examples.
The book is not a good read, compared to several other books on design pattern. It functions more as a reference guide. The book feels a bit dated by today's standards and the code samples are primarily in C++. I found myself mostly skipping the code samples (they're not hard to follow, just unnecessary for me) and just read the analysis of a pattern, as I'm already familiar with many of the patterns and am just looking for points that I may already have missed.
I agree with many other reviewers: the content of this book may have been groundbreaking, but reading it is like trudging through a swamp. There are other better ways to learn the design patterns described in this book.