Professional Documents
Culture Documents
CHERITON SCHOOL OF
COMPUTER SCIENCE
Gang of Four (GoF)
Gang of Four (GoF)
OO Design Patterns
CS 446/646 ECE452
May 11
th
, 2011
IMPORTANT NOTICE TO STUDENTS
These slides are NOT to be used as a replacement for student notes.
These slides are sometimes vague and incomle!e on u"ose to spark class discussions
CS446/646 ECE452 2
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Motivation
Object Oriented Analysis (OOA)
name
problem/motiation
sol"tion
conse6"ences ) tradeo##s
creational1
str"ct"ral
behaioral
class scope
object scope
inheritance to compose
classes (adapter)
2ehaioral class
"ses inheritance to
describe #low o# control(
al!orithms (template)
Creational object
re#inement o# #"nctionality
ia inheritance/s"bclass
CS446/646 ECE452 .&
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Singleton
Adanta!es
re"se
separation o# concerns
!lobal presence
state#"l s3 stateless
m"ltiple instances
li#e cycle
CS446/646 ECE452 .5
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Singleton A Closer Look
Ae"se
co"plin!
co"plin!
inheritance
acts as a b"ilder/#actory
eBample
"se a re!istry/repository
CS446/646 ECE452 2?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Singleton A Closer Look
State#"l sin!leton
access concerns
synchroni%ation
distrib"ted systems
!lobal re!istries/repositories
seriali%ation
class loaders
CS446/646 ECE452 22
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Singleton A Closer Look
Fi#e=cycle ) li#e span
creation
la%y initiali%ation
loss o# state
CS446/646 ECE452 2&
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Singleton
5hen can @ "se a sin!leton
considerationsG.H
will eery "ser "se this class eBactly the same way7
eBamples
lo!!in!
)*+ http,--$$$.ibm.com-developer$orks-librar-co#single.html
CS446/646 ECE452 24
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Adapter
@ntent
inheritance
ia object composition
CS446/646 ECE452 2/
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Adapter Class vs. Object
Class
commitment to a
concrete adaptee class
how7
static in nat"re
Object
incl"din! s"b=classes
why7
CS446/646 ECE452 &?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Adapter Class vs. Object
CS446/646 ECE452 &.
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Adapter & Dependency Inversion
Client
laer
Business
laer
5tilit
laer
Client
laer
Business
laer
5tilit
&nterface
Business
&nterface
5tilit
laer
Simple 6aers "bstract 6aers
$ependency @nersion ($@)
2"tton implementation
relies on Famp
s"ch as a motor
CS446/646 ECE452 &&
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Dependency Inversion Example
$ependency @nersion to Aesc"e
#leBibility ia indirection
re6"est #orwardin!
CS446/646 ECE452 44
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Adapter & Bridge
$i##erence in intent
adapter
co"plin! is "n#oreseen
brid!e