Design Pattern Template

Pattern Name and Classification

The pattern's name conveys the essence of the pattern succinctly. A good name is vital, because it will become part of your design vocabulary. The pattern's classification reflects the scheme we introduce in Section 1.5.

(pattern) 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?
(pattern) 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.

(pattern) Structure

A graphical representation of the classes in the pattern using a notation based on UML. We use interaction diagrams, also.

(pattern) Participants

The classes and/or object participating in the design pattern and their responsibilities.

(pattern) Collaborations

How the participants collaborate to carry out their responsibilities.

(pattern) 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?

(pattern) Implementation

What pitfalls, hints or techniques should you be aware of when implementing the pattern? Are there language-specific issues?

(pattern) Sample Code

Code fragments that illustrate houw you might implement the pattern in C++ or Smalltalk.

(pattern) Known Uses

Examples of the pattern found in real systems. We 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?

m2ilc/design_pattern_template.txt · Dernière modification: 2010/10/08 14:08 par suitable
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante :CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki