Ratings48
Average rating4.1
Surprisingly great, even though OOP is silly. My takeaway from this book was that there are good patterns in programming which transcend paradigms, and that these design patterns are means of achieving those goals in an OO setting. If you read between the lines and the designs, the advice here is applicable to functional styles as well; just try not to get too caught up in the factories and visitors.
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.
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.