1 design patterns object-oriented design. 2 design patterns 4reuse of design knowledge and...

18
1 Design Patterns Design Patterns Object-Oriented Design Object-Oriented Design

Upload: roger-beasley

Post on 05-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

1

Design PatternsDesign Patterns

Object-Oriented DesignObject-Oriented Design

Page 2: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

2

Design Patterns

Reuse of design knowledge and experience

Common in many engineering disciplines

Avoids “reinventing the wheel” Design Patterns, Gamma, Helm,

Johnson, Vlissides (GoF) Architecture: Christopher Alexander

Page 3: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

3

Elements of a Design Elements of a Design PatternPattern

name - simple, descriptive term

intent - brief description of aim

motivation - concrete example

applicability - where is it useful?

structure - “blueprint” diagram

participants - each class in pattern

Page 4: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

4

Elements of a Design Elements of a Design Pattern (cont’d)Pattern (cont’d)

collaborations - relationships among participants

consequences - implications of use

implementation - general implementation

sample code - code for a particular application

known uses - applications where used

related patterns - to combine or substitute

problemareas

Page 5: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

5

Example Pattern: CompositeExample Pattern: Composite

Structural pattern Represent part-whole relationships

in tree hierarchy Uniform treatment of individual

objects

Page 6: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

6

Composite: Application

Piece PartType GetType()int GetIdentifier()int GetTime()float GetQuality()int GetNumberOfRejections()SetRejectStatus(bool)bool GetRejectStatus()

CompoundPart AddPart(Part)int GetNumberOfParts()Part * Decompose()PartType GetType()int GetIdentifier()int GetTime()float GetQuality()int GetNumberOfRejections()SetRejectStatus(bool)bool GetRejectStatus()

sub-parts *

Page 7: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

7

Composite: Application

Part PartType GetType()int GetIdentifier()int GetTime()float GetQuality()int GetNumberOfRejections()SetRejectStatus(bool)bool GetRejectStatus()

CompoundPart AddPart(Part)int GetNumberOfParts()Part * Decompose()

sub-parts *

Page 8: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

8

Composite Pattern Example: Simulation Components

SimComponent

PartType GetType()int GetIdentifier()int GetTime()float GetQuality()int GetNumberOfRejections()SetRejectStatus(bool)bool GetRejectStatus()

Composite

all of ops() ...AddPart(Part)int GetNumberOfParts()Part * Decompose()

Piece

PartType GetType() ...all of the ops()...

Inheritance

Contains 1 ormore Components

in a variablecalled sub-pieces

sub-pieces

Page 9: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

9

Composite Pattern Example: A Graphic

Graphic

Draw()Add(Graphic)Remove(int)GetChild(int)

Picture

Draw()Add(Graphic)Remove(int)GetChild(int)

Text

Draw()

Rectangle

Draw()

Line

Draw()

Inheritance

Contains 1 ormore Graphicsin a variable

called graphics

graphics

for all g in graphicsg.Draw()Add/Remove Graphic

to/from list of graphics

Page 10: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

10

Composite Pattern Example: A Graphic

MailBody

Disp()Add(Attch)Remove(int)GetChild(int)

Attachments

Disp()Add(Attch)Remove(int)GetChild(int)

Pic

Disp()

Image

Disp()

Text

Disp()attchs

for all m in attchsm.Disp()

Alternatively:Display a list of attachments

Page 11: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

11

Composite:Composite:General StructureGeneral Structure

Page 12: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

12

Observer

Behavioral pattern When changed, Subject notifies

Observers

Page 13: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

13

Observer: Structure

Page 14: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

14

Observer: Sequence Diagram

Page 15: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

15

Observer: Application

Unit AddPart(Part *)GetNumberFinalParts()Part * GetFinalPart()SetTypesRequired(PartType *, int num)AddUnitObserver(UnitObserver *) NotifyObservers()

UnitObserver Update()Update(Unit *)

ProductRemovalObserver Update(Unit *)

Observer Update()

// called when unit completes a partfor all o in observers o.Update(this)

Page 16: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

16

Creational Patterns

Abstract Factory Builder Factory Method Prototype Singleton

Page 17: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

17

Structural Patterns

Adapter Bridge Composite Decorator Facade Flyweight Proxy

Page 18: 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids

18

Behavioral Patterns

Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor