Cross-posted from Goodreads.
After banging my head multiple times in attempts to learn design patterns from various online resources — patterns websites, free ebooks, Wikipedia — I finally found one that taught me well. So well that I’d go as far as to say that this is the only text that helps make sense of the complex and formal world of design patterns.
The book covers the most commonly used ‘fundamental’ patterns in depth. At the start, I was a bit apprehensive about the enormous amounts of marginalia, character portraits, and stuff littering the pages. I perceived them as superficial and unnecessary. I was so very wrong. It was only when I moved through the pages and chapters that it all came together. Reflecting back, I don’t think I would remember much of it hadn’t it been for the intended redundancy and visual elements.
That makes me wonder how much trouble the authors had to go through to write story-like yet technically accurate chapters. The detail with which each pattern is described leaves little room for further academic exploration.
Often, the authors approach a problem starting with a simplistic solution only to refactor it later using a design pattern to produce a flexible and more elegant solution. I found this approach resonated better with real-world experience than describing a solution with the pattern from the get-go.
Exercises are very well crafted, varied and plenty. I found myself unable to skip them.
If you are looking to design better software, look no further. Just pick up this book and stick to the end. You’ll thank me later.