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

Transcript of 1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and...

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