23
Lecture # 3 Ahmed Safwat Muhamad Hesham Abdelrahman Al-Ogail Let’s break the ice….

Design Patterns Summer Course 2009-2010 - Session#3

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Design Patterns Summer Course 2009-2010 - Session#3

Lecture # 3Ahmed Safwat

Muhamad HeshamAbdelrahman Al-Ogail

Let’s break the ice….

Page 2: Design Patterns Summer Course 2009-2010 - Session#3

Agenda

You can solve it yourself! Meet Singleton pattern. Call for a new requirement. First try for implementation. Bad smell code. Who’s our hero?

Page 3: Design Patterns Summer Course 2009-2010 - Session#3

Agenda (con’t)

Meet today’s pattern.Break!! Second try for implementation. Common uses. What’s next?

Page 4: Design Patterns Summer Course 2009-2010 - Session#3

What’s a design pattern?

A design pattern is: Set of class(es). Interact together. In UML (class diagram).

Informa

l

Page 5: Design Patterns Summer Course 2009-2010 - Session#3

Let’s solve it ourselves

How do we ensure that

a class has only one instance and that

the instance is easily accessible?

Unique

Global

Access

Page 6: Design Patterns Summer Course 2009-2010 - Session#3

Singleton

The Singleton assures that there is one and only one instance of a class, and provides a global point of access to it

Make sure that there can be one and only one instance of a class

Formal

Page 7: Design Patterns Summer Course 2009-2010 - Session#3

Singleton

Page 8: Design Patterns Summer Course 2009-2010 - Session#3

Our Current Status

What have we did till now?

Page 9: Design Patterns Summer Course 2009-2010 - Session#3

Call for New Requirement

Each level can be in one of two styles: Pharonic Aztec

First level is Aztec. Second and third level is

Pharonic.

Page 10: Design Patterns Summer Course 2009-2010 - Session#3

First Try Implementation

1. We need find where we decide which image we load.

2. Categorize images to 2 sets, Pharonic an Aztec.

Page 11: Design Patterns Summer Course 2009-2010 - Session#3

Our Code Smells Bad

Each time we add a new

theme we add piles of if-else statements.

Our class do more than

its job (SCSR).

Page 12: Design Patterns Summer Course 2009-2010 - Session#3

My Restaurant Drinks

Page 13: Design Patterns Summer Course 2009-2010 - Session#3

My Restaurant Drinks

Page 14: Design Patterns Summer Course 2009-2010 - Session#3

My Restaurant Drinks

Water Bottle

Coke softOrange

softLemon

soft

Page 15: Design Patterns Summer Course 2009-2010 - Session#3

Who’s our hero?

So, what we can call it?

Page 16: Design Patterns Summer Course 2009-2010 - Session#3

Let’s Google it!

Page 17: Design Patterns Summer Course 2009-2010 - Session#3

Break

Page 18: Design Patterns Summer Course 2009-2010 - Session#3

Meet Abstract Factory

Page 19: Design Patterns Summer Course 2009-2010 - Session#3

Meet Abstract Factory

Coke soft

Lemon soft

Page 20: Design Patterns Summer Course 2009-2010 - Session#3

Second Try for Implementation

Just Code It

Page 21: Design Patterns Summer Course 2009-2010 - Session#3

Common Uses

Page 22: Design Patterns Summer Course 2009-2010 - Session#3

What’s Next?

Consequences of Factory Pattern.

Factory Method Pattern.

Implement Factory Pattern using Prototype Pattern.

Page 23: Design Patterns Summer Course 2009-2010 - Session#3

Thank you ...

[email protected]@gmail.com

[email protected]