|
|
|
Innovations Interviews John Vlissides on PatternsWe asked John Vlissides, co-author of Design Patterns CD: Elements of Reusable Object-Oriented Software and author of Pattern Hatching: Design Patterns Appliedto talk with us about his books and background. Innovations: What is this book about? Vlissides: Pattern Hatching has three main thrusts. First off, it's about putting design patterns to work. The most common queries from readers of Design Patterns have been when, where, and how best to apply patterns in the development process. I've tried to address those questions in Pattern Hatching by presenting a variety of approaches to pattern application. That includes unprofitable approaches as well as profitable ones, because design by counterexample can be just as enlightening as design by example. There's lots of both kinds of design in Pattern Hatching. In addition to teaching pattern application, I spend a good chunk of the book extending some of the original patterns found in Design Patterns. There are substantial new insights on Memento, Observer, Singleton, and (of course) Visitor. I've also included a brand-new pattern called Generation Gap, which didn't appear in Design Patterns because of a dearth of known uses. Now, however, thanks to the feedback of many kind people, we have more than enough known uses to brand it a bona fide design pattern. Generation Gap describes a simple way to integrate generated and hand-crafted code while avoiding common maintenance problems of such integration. Many who write code generators of all sortsfrom CORBA stub generators to graphical user interface builders to 4GL compilerswill find this pattern invaluable. A third thrust of the book is to help those who want to write their own patterns. I do that in two ways. The last chapter offers advice in the form of seven "habits" that promote effective pattern writing. It was an obvious way to articulate the subtleties of good pattern writing, but it's also fairly abstractlots of dos and don'ts. So I offer something more concrete as well: a behind-the-scenes look at the development of another new pattern, Typed Message. I chronicle the exchanges we Gang of Four [Erich Gamma, Richard Helm, Ralph Johnson, and myself] had as this pattern evolved, including all the debates, false starts, and virtual hand-wringing that went on. It's the most tangible way I could think of to convey the heart of our pattern-writing process. Innovations: How does this book apply to Design
Patterns? Another thing I felt important to do in this book was to counter the fanaticism that patterns can engender. I've seen people use patterns to produce complex, overwrought, incomprehensible designsdesigns that can do lots of things slowly but almost nothing well. I've encountered aspiring pattern writers who find "patterns" under every rock. Novices are all-too-often desperate to follow a pattern to the letter, no matter how nonsensical that may be. Others get infatuated with pattern lore and personalities, particularly the smartest ones who experience immediate success with them. We must keep patterns in perspective; otherwise they are bound for the ash heap of hype, where so many once-ballyhooed concepts end up. I wanted Pattern Hatching to bring patterns down to earth where they belong. I think Jim Coplien says it best in the Foreword: "[Pattern Hatching] will help you understand how the GoF book [Design Patterns]and, indeed, any collection of design patternscan be a treasured guide without being a burdensome prescription." Innovations: Whom is this book targeted to
help? Innovations: What are your top ten choices for must-have
technical books? Then there are the popular object-oriented programming language reference books, since OOP is my bailiwick: Stroustrup's The C++ Programming Language, Third Edition (Addison-Wesley, 1997) and Arnold and Gosling's The Java Programming Language, Second Edition (Addison-Wesley, 1998). Sadly, both are harder to learn from than they should be. To compensate, C++ people ought to have a copy of Meyers' Effective C++, Second Edition (Addison-Wesley, 1998), and Java-ites should buy Horstmann and Cornell's Core Java 1.1: Fundamentals (Prentice Hall, 1997). Smalltalkers will find Beck's Smalltalk Best Practice Patterns (Prentice Hall, 1996) a godsend. And, with all due modesty, I can't avoid recommending Design Patterns (Addison-Wesley, 1995). Last but not least, everyone who has anything to do with software development should read Brooks' The Mythical Man-Month (Addison-Wesley, 1995). Its strong dose of reality will help you maintain a healthy perspective in the software development business. For more information on this article contact cepubprof@awl.com. Innovations main page
| ||||||||||