RefactoringAfter reading APatternLanguage and re-reading DesignPatterns in the last few months I was surprised that Refactoring felt like more of a pattern language than DesignPatterns. As I bounced around the catalog of refactorings, they felt similar to Alexander's patterns in that there were patterns of various sizes: tiny refactorings to encapsulate a field up to big refactorings to evolve software from a procedural style to object-oriented.
Another similarity I felt with Alexander was that the refactorings built upon each other, not as fractal as Alexander's, but it was clear that the bigger refactorings were composed of smaller refactorings. For instance, Tease Apart Inheritance can be accomplished through Extract Class and Move Method. Similarly, Alexander's A Room of One's Own can be created for a child if one has built with Thick Walls and created a Child Cave. I didn't get that feeling with DesignPatterns, where each pattern, though connected to other patterns, seemed more monolithic.
A better understanding of Java and object-oriented design definitely made this book much more valuable the second time around.
--DaveHoover, August 2003
Well, yeah. GoF is a good book, and probably did more than any other single artifact to spread the word about patterns. And it's a great resource for C++ (and Java) programmers. But...there's a great deal more to patterns and pattern thinking than the style of thing that GoF presents. Check out the PLoP books for taste fo the astonishing range of patterns and pattern languages that have been discovered. --KB