Synopses & Reviews
Patterns remain one of the most important new technologies contributing to software engineering, system design, and development. All indications are that patterns will continue to grow in significance as more and more developers rely on reusable design patterns to help them achieve quick, cost-effective delivery of applications. This volume is a collection of the current best practices and trends in the patterns community. The patterns contained in this book provide effective, tested, and versatile software design solutions for developers in all domains, institutions, and organizations.
The third in a series of books documenting patterns for professional software developers, this volume continues the tradition of informational excellence established by the first two volumes. Pattern Languages of Program Design 3 differs from the previous two volumes in that it includes international submissions, gathering the best papers from both PloP '96 and EuroPLoP '96. It covers a wide range of pattern-related subjects, and patterns are arranged by topic so software engineers can easily select those of greatest relevance to their needs and application domains. This book goes beyond teaching software engineers that design patterns are powerful tools to impart understanding--it shows where and when patterns are best applied.
About the Author
Robert C. Martin
has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor, Inc., a team of experienced consultants who mentor their clients in the fields of C++, Java, OO, Patterns, UML, Agile Methodologies, and Extreme Programming.
Dirk Riehle is a software engineer at Ubilab. He is involved in the Geo project, which is setting up a reflective distributed object-oriented software architecture.
Frank Buschmann is a software engineer at Siemens, where he focuses on object-oriented technology, software reuse, and patterns. He is a member of the ANSI C++ standards committee.
Table of Contents
I. GENERAL PURPOSE DESIGN PATTERNS. 1. Null Object, Bobby Woolf.
2. Manager, Peter Sommerlad.
3. Product Trader, Dirk Bäumer and Dirk Riehle.
4. Type Object, Ralph Johnson and Bobby Woolf.
5. Sponsor-Selector, Eugene Wallingford.
6. Extension Object, Erich Gamma.
II. VARIATIONS ON DESIGN PATTERNS. 7. Acyclic Visitor, Robert C. Martin.
8. Default and Extrinsic Visitor, Martin E. Nordberg III.
9. State Patterns, Paul Dyson and Bruce Anderson.
III. ARCHITECTURAL PATTERNS. 10. Recursive Control, Bran Selic.
11. Bureaucracy, Dirk Riehle.
IV. DISTRIBUTION PATTERNS. 12. Acceptor and Connector, Douglas E. Schmidt.
13. Bodyguard, Fernando Das Neves and Alejandra Garrido.
14. Asynchronous Completion Token, Irfan Pyarali, Timothy H. Harrison, and Douglas C. Schmidt.
15. Object Recovery, António Rito Silva, João Dias Pereira, and José Alves Marques.
16. Patterns for Logging Diagnostic Messages, Neil B. Harrison.
V. PERSISTENCE PATTERNS. 17. Serializer, Dirk Riehle, Wolf Siberski, Dirk Bäumer, Daniel Megert, and Heinz Z’llighoven.
18. Accessing Relational Databases, Wolfgang Keller and Jens Coldewey.
VI. USER INTERFACE PATTERNS. 19. A Pattern Language for Developing Form-Style Windows, Mark Bradac and Becky Fletcher.
VII. PROGRAMMING PATTERNS. 20. Double-Checked Locking, Douglas E. Schmidt and Tim Harrison.
21. External Polymorphism, Chris Cleeland, Douglas E. Schmidt, and Tim Harrison.
VIII. DOMAIN-SPECIFIC PATTERNS. 22. Business Patterns of Association Objects, Lorraine L. Boyd.
23. A Pattern Language of Transport Systems (Point and Route), Liping Zhao and Ted Foster.
24. The Points and Deviations Pattern Language of Fire Alarm, Systems Peter Molin and Lennart Ohlsson.
IX. PROCESS PATTERNS. 25. The Selfish Class, Brian Foote and Joseph Yoder.
26. Patterns for Evolving Frameworks, Don Roberts and Ralph Johnson.
27. Patterns for Designing in Teams, Charles Weir.
28. Patterns for System Testing, David E. DeLano and Linda Rising.
X. PATTERNS ON PATTERNS. 29. A Pattern Language for Pattern Writing, Gerard Meszaros and Jim Doble.