Professional Documents
Culture Documents
GangofFour(GoF)
OODesignPatterns
CS446/646ECE452
May11th,2011
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Motivation
Object Oriented Analysis (OOA)
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
Motivation
How can we improve OOD
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
Motivation
What is a Design Pattern
Anatomy
name
problem/motivation
solution
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
DesignPatternsClassification
GoF Design Patterns
Creational
Structural
Behavioral
class
scope
object
scope
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
DesignPatternsClassification
GoF Design Patterns
class
scope
object
scope
Creational
Structural
Factory Method
Adaptor - class
Behavioral
Interpreter
Template Method
Abstract Factory
Adaptor-object
Chain of responsibility
Builder
Bridge
Command
Prototype
Composite
Iterator
Singleton
Decorator
Mediator
Facade
Memento
Flyweight
Observer
Proxy
State
Strategy
Visitor
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
DesignPatternsClassification
Purpose based classification
creational:
structural
behavioral
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
DesignPatternsClassification
Scope based classification
Two categories
class scope
object scope
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
DesignPatternsClassification
Creational class
Creational object
Structural class
inheritance to compose
classes (adapter)
CHERITON SCHOOL OF
COMPUTER SCIENCE
Behavioral object
uses inheritance to
describe flow of control,
algorithms (template)
WATERLOO
Structural object
Behavioral class
CS446/646 ECE452
Singleton
Intent
Construction
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
10
Singleton
Intent
ensure a class only has one instance, and provide a
global point of access to it.
Construction
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
// Private constructor prevents
// instantiation from other classes
private Singleton() {}
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
11
Singleton
Advantages
refinement of functionality
via inheritance/subclass
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
12
Singleton
Advantages
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
13
Singleton
A closer look at Singleton
reuse
separation of concerns
global presence
multiple instances
life cycle
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
14
SingletonACloserLook
Reuse
coupling
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
15
SingletonACloserLook
Reuse
coupling
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
16
SingletonACloserLook
Reuse
inheritance
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
17
SingletonACloserLook
Separation of concerns
acts as a builder/factory
example
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
18
SingletonACloserLook
Global presence
use a registry/repository
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
19
SingletonACloserLook
Stateful singleton
access concerns
Stateless singleton
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
20
SingletonACloserLook
Multiple instances
distributed systems
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
21
SingletonACloserLook
Life-cycle & life span
creation
lazy initialization
as long as an application's life span
registries can outlive applications
unit testing requires short lived state
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
22
Singleton
When can I use a singleton
considerations[1]
will every user use this class exactly the same way?
will every applications ever need only one instance?
should the clients be unaware of the application
examples
[1] http://www.ibm.com/developerworks/library/co-single.html
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
23
Adapter
Intent
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
24
Motivation
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
25
Motivation
Observations
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
26
AdapterClass
Requirement
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
27
AdapterObject
Requirement
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
28
AdapterClassvs.Object
Class
commitment to a
concrete adaptee class
Object
including sub-classes
why?
how?
static in nature
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
29
AdapterClassvs.Object
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
30
Adapter&DependencyInversion
Dependency Inversion (DI)
Business
layer
Utility
layer
Client
layer
Business
Interface
Utility
Interface
Business
layer
Utility
layer
Simple Layers
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Abstract Layers
CS446/646 ECE452
31
DependencyInversionExample
Implications
Button implementation
relies on Lamp
any changes to Lamp will
impact Button
what if we want to reuse
Button class with a
different component
such as a motor
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
32
DependencyInversionExample
Dependency Inversion to Rescue
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
33
DependencyInversionExample
Observation
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
34
Adapter
How much adaptation is reasonable?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
35
Bridge
Intent
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
36
Bridge
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
37
Bridge
Bridge
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
38
BridgeExample
Problem
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
39
BridgeExample
Solution: Use bridge pattern to place abstraction and
implementation in two different hierarchies
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
40
BridgeExample
Solution: Use bridge pattern to place abstraction and
implementation in two different hierarchies
Bridge
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
41
Bridge
Features
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
42
Adapter&Bridge
Common Elements
request forwarding
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
43
Adapter&Bridge
Difference in intent
adapter
bridge
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
CS446/646 ECE452
44