These pages are based on several books:
Gamma et al, Design Patterns: Elements of
Reuse in Object Oriented Software;
Buschmann et al, A System of Patterns;
Design Patterns for Object-OrientedSoftware Development; and
Coplien and Schmidt, Pattern Languages for
This is meant to be used as a quick tutorial on design patterns.
Much more information on design patterns can be found in the Patterns
http://st-www.cs.uiuc.edu/users/patterns/patterns.html and the
Portland Pattern Repository,
What is a design pattern?
- A design pattern is to design is what a class library is to coding
- Documentation of expert software engineers' "behaviour"
- Documentation of specific reoccuring problems (and solutions)
- Abstraction of common design occurances
- Large range of granularity -- from very general design principles to
Properties of design patterns (Buschmann 1996)
- A pattern addresses a recurring design problem that arises in specific
design situations, and presents a solition to it.
- Patterns document exsiting, well-proven design experience.
- Patterns identify and specify abstractions that are above the level of
single classes and instances, or of components.
- Patterns provide a common vocabulary and understanding for design
- Patterns are a means of documenting software architechtures.
- Patterns support the construction of software with define properties.
- Patterns help you bukld comples anc heterogeneous software architectures.
- Patterns help you to manage software complexity.
What's in a design pattern?
- pattern name
- problem statement: where do I apply it?
- solution: elements that make up the design
Design Patterns (Gamma et al 1995) uses the following headings in its
Not all authors use all these headings. Context is often added by other authors
- Pattern name and classification
- Also known as
- Sample code
- Known uses
- Related patterns
- A common design vocabulary
- A documentation and learning aid
- An adjunct to existing design methods
- A target for refactoring