Upload
abhisheksagi
View
2.327
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Introduction to Design Patterns
Citation preview
Design PatternsIntroduction and Overview
By,Abhishek Sagi
Monday 5 December 11
Introduction to Design Patterns :What are they?
Types of Patterns
Examples : Commonly used patterns
References
Today
Monday 5 December 11
Design PatternsWhat are they?
Monday 5 December 11
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
"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
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
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
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
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
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
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
Types Of Patterns (Continued)
Behavioral
Concerned with algorithms and the assignment of responsibilities between objects.
Monday 5 December 11
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
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
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
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
Design PatternExample 1: The Singleton
Monday 5 December 11
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
SingletonCode Example
Monday 5 December 11
Design PatternExample 2: State Pattern
Monday 5 December 11
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
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
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
State PatternCode Example
Monday 5 December 11
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
Questions?
Contact: Sharat Chandra (or) Tushar Goswami
Email: [email protected]
Monday 5 December 11
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
Thank you J
Monday 5 December 11