37
Design patterns

Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Design patterns

Page 2: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural
Page 3: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

What are design patterns

•  Solu%onstospecificproblemsinOOso3waredesign•  23pa:ernsin3categories

•  Crea%onal•  Structural

•  Composite•  …

•  Behaviorial•  Observer•  Interpreter•  …

Page 4: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Why are we studying them?

Page 5: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Observer

• Onetomanyrela%onship•  Themanyneedtoknowchangesin“one”immediately

•  Example•  Points&Shapes•  Map&loca%on-basedservices•  Agamecharacter&othergamecomponents•  …

Page 6: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Example

•  Ifaperson/subjectchangesitsstatus,howtoletallhis“subscriber”knows?

• Whattodowhenthereisonlyonesubscriber?• Whattodowhentherearemul%plesubscribersofdifferenttypes?• Whatifnewsubscribersareadded?•  Howtomakethecodeeasytomaintainandextend?

Page 7: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram

Page 8: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Example (location, location-related service) •  “loca%on”wouldbetheSubjectinpreviousslide•  “observer”wouldbethesuperclassofallthesub-classesthattrytoupdatethemselvesbasedontheloca%oninforma%on

Page 9: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

The benefit of observer pattern

• Whennewtypesofobserversareadded,theprototypeandimplementa%onofthesubjectclassdoesn’tneedanychanges.

Page 10: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Other things to pay attention

• Don’tforgetthesubscribingandunsubscribingmethods• Pullno%fica%onvspushno%fica%on• WhatifIwanttodeleteasubject• Cananobserversubscribemul%plesubjects?

Page 11: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Composite pattern

•  Treehierarchy• Howdoyoubuildatree?

Page 12: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

How to build a tree and traverse it?

structnode{structnode*le3;structnode*right;intval;intsum(){…}}

Page 13: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

How to differentiate leaves and others?

structleaf{intval;intsum(){returnval;}}

Page 14: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

How to accommodate different types of internal nodes? •  Examples

•  structnodeorstructleaf?•  Book•  Graphics

Page 15: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram

Page 16: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Apply composite pattern to tree

•  “Leaf”inpreviousslideistreeleaf•  “Composite”inpreviousslideisnon-leafnodesinatree

Page 17: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Interpreter

• Whatisaninterpreter•  Language,compiler

•  Example•  Booleanexpression

•  Abstractsyntaxtreea&&b||!caparserwillturnthisintoanabstractsyntaxtree,andthenaninterpreterwillevaluatethetree.Howtowriteaprogramtodothetree-basedevalua%on?

Page 18: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

How to do addition & subtraction

• Howtorepresentanaddi%onexpression?•  Constant+Constant•  Constant+Constant+Constant

• Howtorepresentasubtrac%onexpression?

Page 19: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

How to do addition & subtraction

• Howtorepresentanaddi%onexpression?•  Treeisagoodform

• Howtorepresentasubtrac%onexpression?•  Tree

•  Thechallenge:•  Anynodeintheabovetreecouldbeaconstant,anaddi%onexpression,orasubtrac%onexpression,etc.

Page 20: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram

Page 21: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Strategy Design Pattern Classescenteredonopera%ons,insteadofdata

Page 22: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Strategy

• Mul%plevariantsofonealgorithm• Differenttypesofobjectsonlydifferinginbehavior•  Thekeypartofaclassisitsmethod,NOTitsdata

•  Example:printer,sorter,comparator•  Themethodworksformul%pledatatypes

Page 23: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Example

• Printers•  Variousfontsize,indenta%on,capitaliza%on

Page 24: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram -- encapsulate algorithms into class

Page 25: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Alternative solutions

•  IfinC

•  Super-classonthedataside

•  TemplateinC++

Page 26: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Other examples •  Differentsor%ng•  Differentrendering•  …

Page 27: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Template

• Provideaskeletonforsimilaralgorithms•  Thekeyoftheclassiss%llopera%on,notdata

•  Example

Page 28: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram

Page 29: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Visitor

• Howtoaddaclassofopera%onsforavarietyofdataclasses?

•  Example•  Differentopera%onsforASTnodes•  Differentopera%onsforPerson(Female,Male)

Page 30: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram

Page 31: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Visitor •  Twoclasshierarchies:data&opera%ons

• Whatisitgoodat?•  Ifyouaddopera%ons(Visitorclasses),theinterfaceoftheElementclassesremainsunchanged

• Whatisitbadat?•  IfyouaddnewElementsub-class,significantchangesareneededfortheVisitorside

•  Double-dispatch•  Imaginetwodimensionsofafunc%oncall

•  Theexactalgorithm•  Thetypeofdatathisalgorithmworkson

•  Youwillgetchancetomakechoicealongbothdimensionsdynamically,usingvisitorpa:ern

Page 32: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Creational design patterns

Page 33: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Factory Method

•  Letsaclassdeferinstan%a%ontosubclasses•  NoneedtodecidewhichsubclassIwanttousesta%cally

•  Example•  Date(USstyle,Europestyle,Chinesestyle,…)• Window

Page 34: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram

Factorydesignpa:ernissomewhatsimilarwithStrategydesignpa:ern

Page 35: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

When to use factory design pattern?

•  Thetypeofthesub-classisdeterminedatrun%me•  Thetypechangesveryinfrequentlyonceset

Page 36: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Abstract Factory

•  Forcrea%ngfamiliesofrelatedordependentobjectswithoutspecifyingtheirconcreteclasses

•  Examples•  Date,currency,data• Window,mouse,scrollbar,…

Abstractfactorydesignpa:ernissomewhatsimilarwithVisitordesignpa:ern

Page 37: Design patterns - University of Chicago€¦ · What are design patterns • Solu%ons to specific problems in OO so3ware design • 23 paerns in 3 categories • Creaonal • Structural

Class diagram