Why Design Patterns?
A design pattern is a patterna way to pursue an intentthat uses classes and their methods in an object-oriented language. Developers often start thinking about design after learning a programming language and writing code for a while. You might notice that someone else's code seems simpler and works better than yours does, and you might wonder how that person achieves this simplicity. Design patterns are a level up from code and typically show how to achieve a goal, using one to ten classes. Other people have figured out how to program effectively in object-oriented languages. If you want to become a powerful Java programmer, you should study design patterns, especially those in Design Patterns.
TABLE 1.1: Books Conveying Software Development Wisdom in the Form of Patterns
PATTERN CATEGORY |
TITLE |
AUTHORS /EDITORS |
SOFTWARE PROCESS |
Process Patterns: Building Large-Scale Systems Using Object Technology |
Scott W. Ambler |
|
More Process Patterns: Delivering Large-Scale Systems Using Object Technology |
Scott W. Ambler |
OBJECT MODELING |
Analysis Patterns: Reusable Object Models |
Martin Fowler |
|
Object Models: Strategies, Patterns and Applications |
Peter Coad Mark Mayfield David North |
ARCHITECTURE |
CORBA Design Patterns |
Thomas J. Mowbray Raphael C. Malveau |
|
Core J2EE? Patterns: Best Practices and Design Strategies |
Deepak Alur John Crupi Dan Malks |
|
Pattern-Oriented Software _Architecture, Volume 1: A System of Patterns |
Frank Buschmann Regine Meunier Hans Rohnert Peter Sommerlad Michael Stal |
|
Pattern-Oriented Software _Architecture, Volume 2: Patterns for Concurrent and Networked Objects |
Douglas Schmidt Michael Stal Hans Rohnert Frank Buschmann |
DESIGN |
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis |
William J. Brown Raphael C. Malveau Hays W. McCormick III Thomas J. Mowbray |
|
Applying UML and Patterns, Second Edition |
Craig Larman |
|
Concurrent Programming in Java?, _Second Edition: Design Principles and Patterns |
Doug Lea |
|
Design Patterns |
Erich Gamma Richard Helm Ralph Johnson John Vlissides |
|
Design Patterns for Object-Oriented Software Development |
Wolfgang Pree |
|
Pattern Hatching: Design Patterns Applied |
John Vlissides |
|
SanFranciso? Design Patterns |
James Carey Brent Carlson Tim Graser |
SMALLTALK ORIENTED |
The Design _Patterns Smalltalk Co_mpanion |
Sherman R. Alpert Kyle Brown Bobby Woolf |
|
Smalltalk Best _Practice Patterns |
Kent Beck |
JAVA _ORIENTED |
Java? Design _Patterns: A _Tutorial |
James W. Cooper |
|
Patterns in Java?, _Volume 1 |
Mark Grand |
COMPENDIA |
The Pattern Almanac 2000 |
Linda Rising |
|
Pattern Languages of Program Design |
James O. Coplien Douglas C. Schmidt |
|
Pattern Languages of Program Design 2 |
John M. Vlissides James O. Coplien Norman Kerth |
|
Pattern Languages of Program Design 3 |
Robert C. Martin Dirk Riehle Frank Buschmann |
|
Pattern Languages of Program Design 4 |
Neil Harrison Brian Foote Hans Rohnert |
Design Patterns describes 23 design patternsthat is, 23 ways of pursuing an intent, using classes and objects in an object-oriented language. These are probably not absolutely the most useful 23 design patterns to know. On the other hand, these patterns are probably among the 100 most useful patterns. Unfortunately, no set of criteria establishes the value of a pattern, and so the identity of the other 77 patterns in the top 100 is a mystery. Fortunately, the authors of Design Patterns chose well, and the patterns they document are certainly worth learning.
GoF
You may have noted the potential confusion between design patterns the topic and Design Patterns the book. To distinguish between the topic and the book title, many speakers and some writers refer to the book as the "Gang of Four" book or the "GoF" book, referring to the number of its authors. In print, this distinction is not so confusing. Accordingly, this book avoids using the term "GoF."