A Maximum Pattern Skeleton
This is the information structure to describe patterns according to Gamma et al.
Pattern Name and Classification The most important classifier of a pattern is obviously the name. In addition, Gamma et al. organise their pattern catalogue classifying the purpose of the pattern (creational, behavioral or structural) and further differentiate if the pattern is applicable to rather the class or the object.
Intent A short statement that answers the following questions: What does the design pattern do? What is its rationale and intent? What particular design issue or problem does it address?
Also Known As Other well-known names for the pattern, if any. Motivation A scenario that illustrates a design problem and how the class and object structures in the pattern solve the problem. The scenario will help you understand the more abstract description of the pattern that follows.
Applicability What are the situations in which the design pattern can be applied? What are examples of poor designs that the pattern can address? How can you recognize these situations?
Structure A graphical representation of the classes in the pattern using a notation based on the Object Modeling Technique (OMT) [RBP+91].
Participants The classes and/or objects participating in the design pattern and their responsibilities.
Collaborations How the participants collaborate to carry out their responsibilities.
Consequences How does the pattern support its objectives? What are the trade-offs and results of using the pattern? What aspect of system structure does it let you vary independently?
Implementation What pitfalls, hints, or techniques should you be aware of when implementing the pattern? Are there language-specific issues?
Sample Code Gamma et al. provide sample code (Smalltalk an C++).
Known Uses Examples of the pattern found in real systems. Gamma et al. include at least two examples from different domains.
Related Patterns What design patterns are closely related to this one? What are the important differences? With which other patterns should this one be used?
|