I was going to say "read this book", put a period and finish my review, but they didn't allow me to. This book is a very well written introduction to patterns. Read it GoF and Cooper books. Read it after, if you want to understand what GoF and Cooper books are about. I was going to say "this book is more about good design than it is about patterns", but this would be senseless - patterns are good design. This book doesn't teach you how to "use patterns", it does better - it teaches how to find a good design. It maps a conceptual level of thinking about design - "good design principles" with an implementation level that happened to be patterns. Reading about design principles when you do not see how they work on concrete code examples isn't particularly insightful. Looking at good code if you do not understand principles that underlie it doesn't help either - only makes you puzzled why it is designed in such a weird way? The magic of this book comes from mapping and tying together these two levels of thinking. It liberates your mind from thinking on implementation level ("nouns are classes, verbs are methods") and allows you to think conceptually - "see the forest and the trees" in authors words. "At this final stage, the patterns are not longer important... The patterns have taught you to be receptive to what is real" - C.Alexander speaking from the last pages of Design Patterns Explained. (Mapraputa Is - Bartender, October 2001) More info at Amazon.com More info at Amazon.co.uk More info at FatBrain.com
[This message has been edited by Johannes de Jong (edited November 04, 2001).]
I just finished this book, and I must say that it is fantastic. I have been putting off learning Design Patterns, but this book made me realize that was a bad idea. If there is such a thing as a tech book that you can't put down, this is it.
A year ago you could get a job by just knowing Java. Today you need more and that more is design patterns. IT departments are finally realizing what GOF said 7 years ago, design patterns make sense because they simplify development and make maintanance easier.