Title: Design%20Patterns
1Design Patterns
2Talk Outline
- Pattern Definition
- GRASP Patterns
- GoF Patterns
- GoF Patterns Classification
- Creational Patterns
- Structural Patterns
3What is a Pattern?
- "Each pattern describes a problem which occurs
over and over again in our environment, and then
describes the core of the solution to that
problem, in such a way that you can use this
solution a million times over, without ever doing
it the same way twice (Christopher Alexander)
4What is a Pattern?
- Pattern is a named and well-known
problem/solution pair that can be applied in new
contexts, with advice on how to apply it in novel
situations and discussion of its trade-offs,
implementations, variations, and so forth.
(Craig Larman)
5Why use Patterns?
- A pattern addresses a recurring design problem
that arises in specific design situations, and
presents a solution to it. - Patterns document existing, 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 principles - Patterns are a means of documenting software
architectures.
6Why use Patterns?
- Patterns support the construction of software
with defined properties. - Patterns help you build complex and heterogeneous
software architectures. - Patterns help you to manage software complexity.
7Types of Patterns
- GRASP Patterns
- Architectural Patterns
- Design Patterns
- Idioms
-
- E.g. Usability Patterns
- Anti-Patterns
8Basic Pattern Metamodel
Pattern
Problem
Solution
name
Consequence
9GoF Pattern Metamodel
Intent
SampleCode
ExampleDomain
A.K.A
Issues
Pattern
relPatterns
name
classification
Motivation (ExampleScenario)
Implementation Issue
Consequence
Participant
Applicability (Problem)
Structure (SolutionGraphicalDescription)
ClassDiagram
BehavioralStructure (Collaboration)
StaticStructure
ObjectDiagram
10GRASP Patterns
- GRASP stands for General Responsibility
Assignment Software Pattern - Will be presented the following GRASP Patterns
- Information Expert
- Creator
- Low Coupling
- High Cohesion
11Creator
Name Creator
Problem Who creates an A?
Solution (this can be viewed as advice) Assign class B the responsibility to create an instance of class A if one of these is true (the more the better)
Solution (this can be viewed as advice) B "contains" or compositely aggregates A.
Solution (this can be viewed as advice) B records A.
Solution (this can be viewed as advice) B closely uses A.
Solution (this can be viewed as advice) B has the initializing data for A.
B is a creator of A objects. If more than one
option applies, usually prefer a class B which
aggregates or contains class A.
12Creator Who creates the Square?
13Information Expert
Name Information Expert
Problem What is a basic principle by which to assign responsibilities to objects?
Solution (advice) Assign a responsibility to the class that has the information needed to fulfill it.
Problem Who knows about a Square object, given a
key?
14Information Expert
How to distribute the responsibilities for obtain
the sales total?
15Low Coupling
Name Low Coupling
Problem How to reduce the impact of change?
Solution (advice) Assign responsibilities so that (unnecessary) coupling remains low. Use this principle to evaluate alternatives.
Given following classes
What is better for a makePayment design?
A
B
In practice, the level of coupling alone can't be
considered in isolation from other principles
such as Expert and High Cohesion. Nevertheless,
it is one factor to consider in improving a
design.
16High Cohesion
Name High Cohesion
Problem How to keep objects focused, understandable, and manageable, and as a side effect, support Low Coupling?
Solution (advice) Assign responsibilities so that cohesion remains high. Use this to evaluate alternatives.
17High Cohesion
- Low cohesion implies on code
- Hard to comprehend
- Hard to reuse
- Hard to maintain
- Delicate constantly affected by change
In practice, the level of cohesion alone can't be
considered in isolation from other
responsibilities and other principles such as
Expert and Low Coupling.
18GoF Patterns Classification
Purpose Purpose Purpose
Creational Structural Behavioral
Scope Class Factory Method Adapter Interpreter
Scope Class Factory Method Adapter Template Method
Scope Object Abstract Factory Adapter Chain of Responsibility
Scope Object Builder Bridge Command
Scope Object Prototype Composite Iterator
Scope Object Singleton Decorator Mediator
Scope Object Facade Memento
Scope Object Proxy Flyweight
Scope Object Observer
Scope Object State
Scope Object Strategy
Scope Object Visitor
Table 1 Design pattern space
19Abstract Factory
- Intent Provide an interface for creating
families of related or dependent objects without
specifying their concrete classes. - Also Knows As Kit
20Abstract Factory - Motivation
21Abstract Factory - Structure
22Builder
- Intent Separate the construction of a complex
object from its representation so that the same
construction process can create different
representations.
23Builder
24Builder
25Builder
26Builder
27Sigleton
- Intent Ensure a class only has one instance, and
provide a global point of access to it.
28Singleton
29Adapter
30Adapter
31Adapter
32Adapter
33Adapter
34Facade
- Intent Provide a unified interface to a set of
interfaces in a subsystem. Facade defines a
higher-level interface that makes the subsystem
easier to use.
35Facade
36Facade
37Facade
38Facade
39Facade
40 41Bibliography
- Freeman, E., Sierra, K., Bates, B. 2004. Head
First Design Patterns. OReilly Media, Inc. - Gamma, E., Helm, R., Johnson, R., Vlissides, J.
1995. Design Patterns Elements of Reusable
Object-Oriented Software. Addison-Wesley Pub Co. - Larman, C. 2004. Applying UML and Patterns An
Introduction to Object-Oriented Analysis and
Design and Iterative Development, Third Edition.
Pearson Education, Inc. - Schmidt, D., Stal, M., Rohnert, H., Buschmann, F.
1996. PATTERN-ORIENTED SOFTWARE ARCHITECTURE
VOLUME 1 A System of Patterns. John Wiley Sons
Ltd.