CSC/ECE 517 Fall 2009/wiki2 12 Schemes for Pattern Classification
Overview
Design patterns in software engineering is a time-tested reusable solution to recurring problems in software design. The origin of design patterns can be owed to the work of civil engineer Christopher Alexander, who documented his resolution to design issues in constructing buildings and towns[1]. About a decade and a half ago, software professional began to incorporate Alexanders ideas into guides for novice developer. From then on design patterns became increasingly popular.
Schemes for Pattern Classification
Gang of Four's Classification
Design Patterns gained popularity with the book Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides published in 1995. In their work they used 2 criteria to categorize 23 design pattern[2].
- What does the pattern do?
- Structural - These patterns deal with the composition of classes and their object.
- Creational - These patterns deal with object creation.
- Behavioral - These patterns deal with the interaction between classes and object and how they delegate responsibility.
- What is the scope of the pattern?
- Class - The patterns deal with the relationships between classes and their subclasses. These are more static and fixed at compile time.
- Object - These patterns deal with object relationship. They are more dynamic and can vary at runtime.
Purpose | ||||
Scope | Creational | Structural | Behavioral | |
Class | Factory Method | Adapter (class) | Interpreter | |
Template Method | ||||
Object | Abstract Factory | Adapter (object) | Command | |
Prototype | Composite | Mediator | ||
Builder | Bridge | Iterator | ||
Singleton | Decorator | Memento | ||
Facade | Observer | |||
Flyweight | State | |||
Proxy | Strategy | |||
Visitor | ||||
Chain Of Responsibility |
Zimmer's Classification
Zimmer[3] classifies the relationships between the Gang of Four design patterns. Focusing on the problem and solution of each relationship, they can be classified as :
- X uses Y in its solution.
- The Interpreter design pattern uses the Composite design patter.
- The Prototype design pattern uses the Singleton design pattern.
- Variant of X uses Y in its solution.
- X is similar to Y.
Using these relationships Zimmer placed design pattern in 3 layers.
Layer | Design Pattern |
Basic design patterns and techniques. | |
Design patterns for typical software problems. | |
Design patterns specific to an application domain. | Interpreter |
References
[1] http://www.developer.com/design/article.php/1474561/What-Are-Design-Patterns-and-Do-I-Need-Them.htm
[2] http://www.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm
[3] Relationships between Design Patterns, by Walter Zimmer, Forschungszentrum Informatik, Bereich Programmstrukturen, 1995