14
Design Patterns Ric Holt U Waterloo, March 2009

Design Patterns

Embed Size (px)

DESCRIPTION

Design Patterns. Ric Holt U Waterloo, March 2009. What is a Design Pattern. A Design Pattern systematically names, explains, and implements an important recurring design. These define well-engineered design solutions that practitioners can apply when crafting their applications. - PowerPoint PPT Presentation

Citation preview

Page 1: Design Patterns

Design Patterns

Ric Holt

U Waterloo, March 2009

Page 2: Design Patterns

What is a Design Pattern

• A Design Pattern systematically names, explains, and implements an important recurring design.

• These define well-engineered design solutions that practitioners can apply when crafting their applications.

Page 3: Design Patterns

Why Design Patterns?

• Good designers do not solve every problem from first principles. They reuse solutions.

• Practitioners do not do a good job of recording experience in software design for others to use. Patterns help solve this problem.

Page 4: Design Patterns

Two Example Patterns

1. MVC (Model View Controller)

2. Adapter

Page 5: Design Patterns

1. MVC Pattern(Model View Controller)

• There is a model (subject) which can be thought of as the application

• There are one or more views of the object (by observers)

• There is a controller that mediates between the model and the view(s).

Page 6: Design Patterns

Example MVC

a b ca

bc

[Mancoridis picture]

Views

Controller

Modela b c

503020

a = 50%b = 30%c = 20%

Page 7: Design Patterns

Example MVC

a b ca

bc

[Mancoridis picture]

Views

Controller

Modela b c

503020

a = 50%b = 30%c = 20%

See

Interact

Page 8: Design Patterns

Multiple View Problem

• Need to keep all the views consistent

• If user (or one of users) changes a view, all other views should be updated

Page 9: Design Patterns

Information Hiding:Insulating Model from Presentation

• The model is the “back end” or “business logic”, or “application”

• To minimize complexity, the model should know as little as possible about– How users interact with system– How many users are there– Any other models

Page 10: Design Patterns

Implementing MVC

• There are many choices– Where is list of views (observers) kept?– How is notification of change transmitted?– How manage web interface?– Should a view ask for (or should it be told of)

details about changes?

Page 11: Design Patterns

What Kind of Pattern is MVC?

• Design pattern proper?– Use it for structuring modest configurations

• Architectural pattern?– Use it for overall structure of a software

system, defining interactions among services, browsers etc.

Page 12: Design Patterns

2. Adapter Pattern

• You have an existing client (application) that uses an old interface to an existing support package.

• You are given a new interface to a new support package

• You need to produce an adapter so that:– The client can use the new interface instead of

the old one (without changing the client)

Page 13: Design Patterns

Illustration of Adapter Pattern

ClientOld

package

Old interfac

e

Client Adapter

Old interfac

e New package

New interfac

e

Page 14: Design Patterns

Implementing Adapter Pattern Using Object Composition

ClientOld Interface

Request()

New Interface

SpecificRequest()

Adapter

Request() SpecificRequest()

adapteeinherit