UML provides a language for patterns
The design pattern community has exploded in recent years partially because
there is now a near universal language that can be used to express patterns.
Unified Modeling Language ( UML ) brings together under one umbrella sev-
eral of the tools supporting object-oriented development. Concepts such as
scenarios (use cases), class interactions (class diagrams), object interface inter-
action (sequence diagrams), and object state (state diagrams) can all be cap-
tured in UML . Though this subject is beyond the scope of this topic, there are
many good UML books, tools, and resources as well.
UML Distilled: A Brief Guide to the Standard Object Modeling Language ,
by Martin Fowler and Kendall Scott
Enterprise Java with UML , by C. T. Arrington
The Unified Modeling Language User Guide , by Grady Booch, et al.
Antipatterns teach from the negative
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis by
William J. Brown, et al., is an outstanding book dedicated to the study of
antipatterns. The antipattern templates that follow each chapter in this topic
come from Brown's text. In it, the authors describe an antipattern as “a liter-
ary form that describes a commonly occurring solution to a problem that gen-
erates decidedly negative consequences.” The words that caught my attention
are commonly occurring solution and decidedly negative consequences . Many
others have presented some of the negative examples in this topic as the right
way to do things. Some, like the Magic Servlet, are forms of programs pub-
lished in tutorials, created by wizards, or captured in frameworks. As for