SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Design Patterns
                         Introduction and Overview




                                                     By,
                                                      Abhishek Sagi
Monday 5 December 11
Today
                       Introduction to Design Patterns :
                         What are they?

                         Types of Patterns

                         Examples : Commonly used patterns

                         References




Monday 5 December 11
Design Patterns
                             What 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 Patterns
                   Even 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 Parts
               Pattern 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 Patterns
                       General 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 Pattern
                         Example 1: The Singleton




Monday 5 December 11
Singleton
                   Creational 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
Singleton
                         Code Example




Monday 5 December 11
Design Pattern
                         Example 2: State Pattern




Monday 5 December 11
State Pattern
                 Behavioral 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: Approaches
               Application 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 frequent
Monday 5 December 11
State Pattern
                             Code Example




Monday 5 December 11
Recommended Books
      Design Patterns: Elements of Reusable Object-Oriented Software
      Authors: “Gang of four”
      Hardback: 416 pages
      Publisher: Addison Wesley (14 Mar 1995)
                                                           C++
      ISBN-10: 0201633612
      ISBN-13: 978-0201633610




       Head First: Design Patterns
       Authors: Several
       Paperback: 688 pages
       Publisher: O'Reilly Media (25 Oct 2004)            Java
       ISBN-10: 0596007124
       ISBN-13: 978-0596007126



Monday 5 December 11
Questions?

                       Contact: Sharat Chandra (or) Tushar Goswami



                       Email: abhishek.sagi@ymail.com




Monday 5 December 11
References
                Design 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

Contenu connexe

Tendances

Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General IntroductionAsma CHERIF
 
Singleton design pattern
Singleton design patternSingleton design pattern
Singleton design pattern11prasoon
 
Design Pattern - Factory Method Pattern
Design Pattern - Factory Method PatternDesign Pattern - Factory Method Pattern
Design Pattern - Factory Method PatternMudasir Qazi
 
Design Pattern in Software Engineering
Design Pattern in Software EngineeringDesign Pattern in Software Engineering
Design Pattern in Software EngineeringManish Kumar
 
Creational pattern
Creational patternCreational pattern
Creational patternHimanshu
 
Software Engineering - chp4- design patterns
Software Engineering - chp4- design patternsSoftware Engineering - chp4- design patterns
Software Engineering - chp4- design patternsLilia Sfaxi
 
UML diagrams and symbols
UML diagrams and symbolsUML diagrams and symbols
UML diagrams and symbolsKumar
 
Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)paramisoft
 
Gof design pattern
Gof design patternGof design pattern
Gof design patternnaveen kumar
 
Object oriented vs. object based programming
Object oriented vs. object based  programmingObject oriented vs. object based  programming
Object oriented vs. object based programmingMohammad Kamrul Hasan
 
Design Patterns - Abstract Factory Pattern
Design Patterns - Abstract Factory PatternDesign Patterns - Abstract Factory Pattern
Design Patterns - Abstract Factory PatternMudasir Qazi
 

Tendances (20)

Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General Introduction
 
Singleton design pattern
Singleton design patternSingleton design pattern
Singleton design pattern
 
Design Pattern - Factory Method Pattern
Design Pattern - Factory Method PatternDesign Pattern - Factory Method Pattern
Design Pattern - Factory Method Pattern
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Design pattern-presentation
Design pattern-presentationDesign pattern-presentation
Design pattern-presentation
 
Design Pattern in Software Engineering
Design Pattern in Software EngineeringDesign Pattern in Software Engineering
Design Pattern in Software Engineering
 
Creational pattern
Creational patternCreational pattern
Creational pattern
 
Design Patterns.ppt
Design Patterns.pptDesign Patterns.ppt
Design Patterns.ppt
 
Software Engineering - chp4- design patterns
Software Engineering - chp4- design patternsSoftware Engineering - chp4- design patterns
Software Engineering - chp4- design patterns
 
Facade Design Pattern
Facade Design PatternFacade Design Pattern
Facade Design Pattern
 
UML diagrams and symbols
UML diagrams and symbolsUML diagrams and symbols
UML diagrams and symbols
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
 
Factory Method Pattern
Factory Method PatternFactory Method Pattern
Factory Method Pattern
 
Design pattern
Design patternDesign pattern
Design pattern
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Factory Design Pattern
Factory Design PatternFactory Design Pattern
Factory Design Pattern
 
Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)
 
Gof design pattern
Gof design patternGof design pattern
Gof design pattern
 
Object oriented vs. object based programming
Object oriented vs. object based  programmingObject oriented vs. object based  programming
Object oriented vs. object based programming
 
Design Patterns - Abstract Factory Pattern
Design Patterns - Abstract Factory PatternDesign Patterns - Abstract Factory Pattern
Design Patterns - Abstract Factory Pattern
 

En vedette

Linux process management
Linux process managementLinux process management
Linux process managementRaghu nath
 
Design pattern in android
Design pattern in androidDesign pattern in android
Design pattern in androidJay Kumarr
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12koolkampus
 
Loving & Hating Christopher Alexander
Loving & Hating Christopher AlexanderLoving & Hating Christopher Alexander
Loving & Hating Christopher AlexanderMolly Steenson
 
Christopher Alexander: Elements Of Style
Christopher Alexander: Elements Of StyleChristopher Alexander: Elements Of Style
Christopher Alexander: Elements Of StyleMatthias Mueller-Prove
 
Traditional Serial Vision Excerpt
Traditional Serial Vision ExcerptTraditional Serial Vision Excerpt
Traditional Serial Vision Excerptsstannard
 
Townscape - Gordon Cullen V2
Townscape - Gordon Cullen V2Townscape - Gordon Cullen V2
Townscape - Gordon Cullen V2Proyectar Ciudad
 
Analytical approach on design theories of christopher alexander
Analytical approach on design theories of christopher alexanderAnalytical approach on design theories of christopher alexander
Analytical approach on design theories of christopher alexanderShabnam Golkarian
 

En vedette (11)

Linux process management
Linux process managementLinux process management
Linux process management
 
Design pattern in android
Design pattern in androidDesign pattern in android
Design pattern in android
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12
 
Loving & Hating Christopher Alexander
Loving & Hating Christopher AlexanderLoving & Hating Christopher Alexander
Loving & Hating Christopher Alexander
 
Christopher Alexander: Elements Of Style
Christopher Alexander: Elements Of StyleChristopher Alexander: Elements Of Style
Christopher Alexander: Elements Of Style
 
Traditional Serial Vision Excerpt
Traditional Serial Vision ExcerptTraditional Serial Vision Excerpt
Traditional Serial Vision Excerpt
 
Townscape - Gordon Cullen V2
Townscape - Gordon Cullen V2Townscape - Gordon Cullen V2
Townscape - Gordon Cullen V2
 
Townscape - Gordon Cullen
Townscape - Gordon CullenTownscape - Gordon Cullen
Townscape - Gordon Cullen
 
Christopher alexander
Christopher alexanderChristopher alexander
Christopher alexander
 
Analytical approach on design theories of christopher alexander
Analytical approach on design theories of christopher alexanderAnalytical approach on design theories of christopher alexander
Analytical approach on design theories of christopher alexander
 
serial vision
serial visionserial vision
serial vision
 

Similaire à Design patterns

Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven designRick van der Arend
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2Ankit Dubey
 
dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...
dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...
dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...Anil Sharma
 
Gang of Four in Java
Gang of Four in Java Gang of Four in Java
Gang of Four in Java Mina Tafreshi
 
PATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsPATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsMichael Heron
 
Design Pattern - Introduction
Design Pattern - IntroductionDesign Pattern - Introduction
Design Pattern - IntroductionMudasir Qazi
 
Design Patterns Course
Design Patterns CourseDesign Patterns Course
Design Patterns CourseAhmed Soliman
 
Dino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to SolutionsDino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to SolutionsCodeFest
 
11 ooad uml-14
11 ooad uml-1411 ooad uml-14
11 ooad uml-14Niit Care
 
Design in construction
Design in constructionDesign in construction
Design in constructionAsha Sari
 
Design in construction
Design in constructionDesign in construction
Design in constructionAsha Sari
 
The Object Model
The Object Model  The Object Model
The Object Model yndaravind
 

Similaire à Design patterns (20)

7494607
74946077494607
7494607
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
 
dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...
dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...
dotnet stuff.com tutorials-design-patterns_exploring-net-design-patterns-in-s...
 
Gang of Four in Java
Gang of Four in Java Gang of Four in Java
Gang of Four in Java
 
OOP design patterns
OOP design patternsOOP design patterns
OOP design patterns
 
Oops design pattern_amitgupta
Oops design pattern_amitguptaOops design pattern_amitgupta
Oops design pattern_amitgupta
 
PATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsPATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design Patterns
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Design Pattern - Introduction
Design Pattern - IntroductionDesign Pattern - Introduction
Design Pattern - Introduction
 
Unit iii design patterns 9
Unit iii design patterns 9Unit iii design patterns 9
Unit iii design patterns 9
 
What is design pattern
What is design patternWhat is design pattern
What is design pattern
 
Design Patterns Course
Design Patterns CourseDesign Patterns Course
Design Patterns Course
 
Dino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to SolutionsDino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to Solutions
 
11 ooad uml-14
11 ooad uml-1411 ooad uml-14
11 ooad uml-14
 
Design in construction
Design in constructionDesign in construction
Design in construction
 
Design in construction
Design in constructionDesign in construction
Design in construction
 
Design patterns
Design patternsDesign patterns
Design patterns
 
The Object Model
The Object Model  The Object Model
The Object Model
 
Design pattern
Design patternDesign pattern
Design pattern
 

Dernier

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Dernier (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Design patterns

  • 1. Design Patterns Introduction and Overview By, Abhishek Sagi Monday 5 December 11
  • 2. Today Introduction to Design Patterns : What are they? Types of Patterns Examples : Commonly used patterns References Monday 5 December 11
  • 3. Design Patterns What are they? Monday 5 December 11
  • 4. 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
  • 5. "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
  • 6. Design Patterns Even 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
  • 7. 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
  • 8. Four Essential Parts Pattern 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
  • 9. 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
  • 10. 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
  • 11. Types Of Patterns General 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
  • 12. Types Of Patterns (Continued) Behavioral Concerned with algorithms and the assignment of responsibilities between objects. Monday 5 December 11
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. Design Pattern Example 1: The Singleton Monday 5 December 11
  • 18. Singleton Creational 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
  • 19. Singleton Code Example Monday 5 December 11
  • 20. Design Pattern Example 2: State Pattern Monday 5 December 11
  • 21. State Pattern Behavioral 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
  • 22. State Pattern: Approaches Application 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
  • 23. 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 frequent Monday 5 December 11
  • 24. State Pattern Code Example Monday 5 December 11
  • 25. Recommended Books Design Patterns: Elements of Reusable Object-Oriented Software Authors: “Gang of four” Hardback: 416 pages Publisher: Addison Wesley (14 Mar 1995) C++ ISBN-10: 0201633612 ISBN-13: 978-0201633610 Head First: Design Patterns Authors: Several Paperback: 688 pages Publisher: O'Reilly Media (25 Oct 2004) Java ISBN-10: 0596007124 ISBN-13: 978-0596007126 Monday 5 December 11
  • 26. Questions? Contact: Sharat Chandra (or) Tushar Goswami Email: abhishek.sagi@ymail.com Monday 5 December 11
  • 27. References Design 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
  • 28. Thank you J Monday 5 December 11