28
Design Patterns Introduction and Overview By, Abhishek Sagi Monday 5 December 11

Design patterns

Embed Size (px)

DESCRIPTION

Introduction to Design Patterns

Citation preview

Page 1: Design patterns

Design PatternsIntroduction and Overview

By,Abhishek Sagi

Monday 5 December 11

Page 2: Design patterns

Introduction to Design Patterns :What are they?

Types of Patterns

Examples : Commonly used patterns

References

Today

Monday 5 December 11

Page 3: Design patterns

Design PatternsWhat are they?

Monday 5 December 11

Page 4: Design patterns

Design Patterns

Idea originated from Christopher Wolfgang Alexander (Austria).

Architect

It was initially applied for architecture for buildings and towns, But not computer programming for writing software.

Monday 5 December 11

Page 5: Design patterns

"Each pattern describes a problem which occurs

over and over again in our environment, and

then describes the core of the solution to that

problem, in such a way that you can use this

solution a million times over, without ever

doing it the same way twice”

-Christopher Alexander (Architect) “A Pattern Language”,New York, Oxford University Press, 1977.

Monday 5 December 11

Page 6: Design patterns

Design PatternsEven through he was talking about patterns in buildings and towns, What he says is true about object-oriented design patterns.

Solutions are expressed in terms of objects and interfaces instead of walls and doors.

At core both patterns is a solution to a problem in a context.

Simply, design patterns help a designer to get a right design faster.

Monday 5 December 11

Page 7: Design patterns

Describes a design pattern as a three-part rule

1.) Description of a context

2.) A problem

3.) A solution

This is modified for software design patterns which consists of four parts

Monday 5 December 11

Page 8: Design patterns

Four Essential PartsPattern name

A handle to briefly describe the design problem,but more importantly to provide a common vocabulary for software designers to use.

Problem

A description of the problem that the design pattern is intended to solve.

Monday 5 December 11

Page 9: Design patterns

Solution

Describes what elements are required to make up the design, their relationships and its context.

Consequences

What are the results and trade offs by applying the design pattern.

Allows comparison between different design patterns, to see if there is a better fit for the actual problem.

Monday 5 December 11

Page 10: Design patterns

Design Patterns : Programming Languages

Aimed towards languages that have language level support for Object Oriented Programming

Not exclusively , But it would be easier to apply with OOP!

Different OOP languages have different mechanisms for applying patterns.

Monday 5 December 11

Page 11: Design patterns

Types Of PatternsGeneral description of the type of problem the pattern addresses

Creational:

Concerned with everything about the creation of objects

Structural:

Concerned with how classes and objects are composed to form larger structures

Monday 5 December 11

Page 12: Design patterns

Types Of Patterns (Continued)

Behavioral

Concerned with algorithms and the assignment of responsibilities between objects.

Monday 5 December 11

Page 13: Design patterns

Types Of Patterns (Overview)Creational: Creational patterns are ones that create objects for you, rather than having you instantiate objects directly. This gives your program more flexibility in deciding which objects need to be created for a given case.

Abstract Factory*: Groups object factories that have a common theme.

Builder constructs: Complex objects by separating construction and representation.

Factory Method*: Creates objects without specifying the exact class to create.

Prototype: Creates objects by cloning an existing object.

Singleton*: Restricts object creation for a class to only one instance.

Monday 5 December 11

Page 14: Design patterns

Types Of Patterns (Contd)Structural Patterns: These concern class and object composition. They use inheritance to compose interfaces and define ways to compose objects to obtain new functionality.

Adapter: Allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.

Bridge*: Decouples an abstraction from its implementation so that the two can vary independently.

Composite: Composes zero-or-more similar objects so that they can be manipulated as one object.

Decorator: Dynamically adds/overrides behavior in an existing method of an object.

Monday 5 December 11

Page 15: Design patterns

Types Of Patterns (Contd)Facade: Provides a simplified interface to a large body of code.

Flyweight: Reduces the cost of creating and manipulating a large number of similar objects.

Proxy: Provides a placeholder for another object to control access, reduce cost, and reduce complexity.

Behavioral Patterns: Most of these design patterns are specifically concerned with communication between objects.

Chain of responsibility: Delegates commands to a chain of processing objects.

Command: Creates objects which encapsulate actions and parameters.

Interpreter: Implements a specialized language.

Monday 5 December 11

Page 16: Design patterns

Types Of Patterns (Contd)Iterator*: Accesses the elements of an object sequentially without exposing its underlying representation.

Mediator: Allows loose coupling between classes by being the only class that has detailed knowledge of their methods.

Memento: Provides the ability to restore an object to its previous state (undo).

Observer: Is a publish/subscribe pattern which allows a number of observer objects to see an event.

State*: Allows an object to alter its behavior when its internal state changes.

Strategy: Allows one of a family of algorithms to be selected on-the-fly at runtime.

Monday 5 December 11

Page 17: Design patterns

Design PatternExample 1: The Singleton

Monday 5 December 11

Page 18: Design patterns

SingletonCreational category of design patterns

Intent: Ensure that a class has only once instance, And provide global point of access to it.

Motivation: Important for some classes to have no more than one instance.

Examples:

Console in a game; Logging utility; An Application Class; A Window Manager.

Monday 5 December 11

Page 19: Design patterns

SingletonCode Example

Monday 5 December 11

Page 20: Design patterns

Design PatternExample 2: State Pattern

Monday 5 December 11

Page 21: Design patterns

State PatternBehavioral category of design patterns

Provides behavior to an object so that it can be changed during runtime.

Very similar to bridge pattern but intention is different

Bridge is structural :

Hide data from client

client only aware of the handle

State is behavioral :

Provides flexible behavior of owning object and client would be aware of both owning object and state objects.

Monday 5 December 11

Page 22: Design patterns

State Pattern: ApproachesApplication decide

Requires state transition

Implies constraints, And less flexible

states are unaware of each other

States decide

Most flexible approach

States are aware of each other

Implementation dependencies between state code

Monday 5 December 11

Page 23: Design patterns

State creation/destruction:2 Approaches:As Needed

States are created on the fly

Destroyed when no longer need - can be expensive

Conserves memory

Preferable where state changes are infrequent

States created in advance (Compile time)

Destroyed only when application terminates - CHEAP!

Memory usage - COSTLY! (all data stored in states are created upfront)

Preferable where state changes are frequentMonday 5 December 11

Page 24: Design patterns

State PatternCode Example

Monday 5 December 11

Page 25: Design patterns

Recommended BooksDesign Patterns: Elements of Reusable Object-Oriented Software

Authors: “Gang of four”

Hardback: 416 pages

Publisher: Addison Wesley (14 Mar 1995)

ISBN-10: 0201633612

ISBN-13: 978-0201633610

Head First: Design PatternsAuthors: SeveralPaperback: 688 pagesPublisher: O'Reilly Media (25 Oct 2004)ISBN-10: 0596007124ISBN-13: 978-0596007126

Java

C++

Monday 5 December 11

Page 26: Design patterns

Questions?

Contact: Sharat Chandra (or) Tushar Goswami

Email: [email protected]

Monday 5 December 11

Page 27: Design patterns

ReferencesDesign Patterns: Introduction To Design Patterns; Steven Mead , Senior Programming Lecturer , University Of Teesside ; 2010 .

Design Patterns: Elements of Reusable Object-Oriented Software; Erich Gamma et al; Addison-Wesley; 1995; 978-0201633610.

http://en.wikipedia.org/wiki/Design_Patterns

Big C++ (2nd edition); Cay Horstmann; Timothy Budd; John Wiley & Sons; January 2009; 978- 0470383285.

Monday 5 December 11

Page 28: Design patterns

Thank you J

Monday 5 December 11