+ All Categories
Home > Documents > Decorator - University of Pretoria · to an object while the Decorator only changes...

Decorator - University of Pretoria · to an object while the Decorator only changes...

Date post: 16-Jul-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
14
Identification Structure Discussion Participants Related Patterns Example - creating a Pizza Example - Sales Ticket Decorator Linda Marshall and Vreda Pieterse Department of Computer Science University of Pretoria 29 August 2014 Linda Marshall and Vreda Pieterse Decorator
Transcript
Page 1: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Decorator

Linda Marshall and Vreda Pieterse

Department of Computer ScienceUniversity of Pretoria

29 August 2014

Linda Marshall and Vreda Pieterse Decorator

Page 2: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Overview1 Identification2 Structure3 Discussion4 Participants5 Related Patterns6 Example - creating a Pizza

The scenario

Hawaiian pizza

First attempt

Enter the Decorator....7 Example - Sales Ticket

Linda Marshall and Vreda Pieterse Decorator

Page 3: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Name and Classification: Decorator

(Object Structural) Intent: “Attach

additional responsibilities to an object

dynamically. Decorators provide a flexible

alternative to subclassing for extending

functionality.” GoF(175)

Linda Marshall and Vreda Pieterse Decorator

Page 4: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Linda Marshall and Vreda Pieterse Decorator

Page 5: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Looks similar to the Composite. A

composite may comprise of multiple

components, while Decorators comprise

of 0 or 1.

Composite themselves do not have

specilisations, while Decorators do.

Linda Marshall and Vreda Pieterse Decorator

Page 6: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Component

interface for objects that can have

responsibilities dynamically added to

them.

ConcreteComponent

the object to which the additional

responsibilities can be attached

Linda Marshall and Vreda Pieterse Decorator

Page 7: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Decorator

defines a reference to a Component-type

object

ConcreteDecorator

adds the responsibilities to the

component

Linda Marshall and Vreda Pieterse Decorator

Page 8: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Adapter (139) : Changes the interface

to an object while the Decorator only

changes responsibilities.

Composite (163) : A Decorator can be

seen as a Composite with only one

component that has added responsibility.

Strategy (315) : The Strategy pattern

changes the inner workings of an object

while the Decorator changes the looks.Linda Marshall and Vreda Pieterse Decorator

Page 9: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

The scenarioHawaiian pizzaFirst attemptEnter the Decorator....

Luigi (the restauranteur from the Ashes to

Ashes series) has decided to begin a fast

pizza outlet called Dumbo’s - he was a

Disney fan. Luigi wants his clientele to

choose the toppings for the pizza. Each

topping has a price associated with it. A

Hawaiian pizza for example has a tomato

base, mozzarella cheese, ham and pineapple.

Linda Marshall and Vreda Pieterse Decorator

Page 10: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

The scenarioHawaiian pizzaFirst attemptEnter the Decorator....

Linda Marshall and Vreda Pieterse Decorator

Page 11: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

The scenarioHawaiian pizzaFirst attemptEnter the Decorator....

class Pizza {

// methods to get a description

// and the cost

};

class Hawaiian : public Pizza {

// description and cost methods

// specifically to Hawaiian pizzas

};Linda Marshall and Vreda Pieterse Decorator

Page 12: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

The scenarioHawaiian pizzaFirst attemptEnter the Decorator....

What if -

the cost of ham changes?

Luigi wants to add salami to the pizza?

Or maybe even cheddar cheese!

Linda Marshall and Vreda Pieterse Decorator

Page 13: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

The scenarioHawaiian pizzaFirst attemptEnter the Decorator....

The previous design will require another class

to be defined to inherit from Hawaiian which

increases the price of the pizza to include

salami and updates the description

accordingly. You can see where this is

going.........

How would you use the Decorator pattern to

solve your problem?

Linda Marshall and Vreda Pieterse Decorator

Page 14: Decorator - University of Pretoria · to an object while the Decorator only changes responsibilities. Composite (163) : A Decorator can be seen as a Composite with only one component

IdentificationStructure

DiscussionParticipants

Related PatternsExample - creating a Pizza

Example - Sales Ticket

Linda Marshall and Vreda Pieterse Decorator


Recommended