SlideShare a Scribd company logo
1 of 45
Design Pattern
         By Julie Iskander
MSc. Communication and Electronics
Outlines
                   Lecture 4
• Behavioral Design Patterns
 •   Chain of Responsibility
 •   Command
 •   Mediator
 •   Memento
 •   Observer
 •   State
 •   Strategy
 •   Template Method
 •   Interpreter
 •   Visitor
 •   Iterator (Reading Assignment)
Behavioral Patterns
Chain of responsibility DP
• What
  • A replication of the business or functional process of
    delegating responsibility within a hierarchy.
• Where
  • A requirement to manage tasks by coordinating objects and
    have them cooperate within a hierarchical structure.
• Why
  • Avoid coupling sender of request to receiver
• How
  • An abstract class that represents a participant or link is sub-
    classed into a set of links, and then the sub-classed links
    implement the functionality that represents their responsibility
    and can trigger the passing on of a requirement. The client
    determines the hierarchy among the links and initiates
    passing the requirement to the chain.
Chain of responsibility dp
Chain of responsibility dp
Chain of responsibility dp
Chain of responsibility
Chain of responsibility
Command DP
(object - Behavioral DP)
Command DP
         (object - Behavioral DP)
• What
 • Encapsulate a request as an object, and support
   undoable operations.

• Where
 • To issue requests to objects without knowing anything
   about the operation being requested or the receiver of the
   request.

• Why
 • specify, queue, and execute requests at different
   times. support undo. support logging changes
Command DP
(object - Behavioral DP)
Command DP
(object - Behavioral DP)
Command DP
(object - Behavioral DP)
Command DP
(object - Behavioral DP)
Command DP
      (object - Behavioral DP)
• Supporting undo and redo:
 • Must provide a reverse method (Unexecute/Undo).
 • Might need to store additional state like the Receiver
   object, the arguments to the operation performed on
   the receiver, and any original values in the receiver that
   can change as a result of handling the request.
 • For one level of undo, store only the last executed
   command.
 • For multi-level undo, store a history list of executed
   commands.
Mediator DP
         (object - Behavioral DP)
• What
  • Define an object that encapsulates how a set of objects
    interact. Mediator promotes loose coupling by keeping objects
    from referring to each other explicitly, and it lets you vary their
    interaction independently.
• Where
  • when many objects interconnect, to lessen the coupling
• Why
  • To lessen the coupling between objects
• How
  • Encapsulating collective behavior in a separate mediator
    object. A mediator is responsible for controlling and
    coordinating the interactions of a group of objects. The
    objects only know the mediator, thereby reducing the number
    of interconnections.
Mediator DP
(object - Behavioral DP)
Mediator DP
(object - Behavioral DP)
Mediator DP
(object - Behavioral DP)
Mediator DP
(object - Behavioral DP)
Mediator DP
(object - Behavioral DP)
Mediator DP
(object - Behavioral DP)
Mediator DP
     (object - Behavioral DP)
• Façade make requests to the
  subsystem, while mediator enables
  cooperative behaviour between colleagues
  objects
MeMento DP
         (object - Behavioral DP)
• What
 • capture and externalize an object's internal state so
   that the object can be restored to this state later.

• Where
 • To store a snapshot of internal state of an object, to
   implement checkpoints

• Why
 • To implement checkpoints, save state, undo
   mechanisms

• How
MeMento DP
(object - Behavioral DP)
MeMento DP
(object - Behavioral DP)
MeMento DP
      (object - Behavioral DP)
• Memento objects are passive
• Memento can be used to maintain state for
  undoable operations for Command DP
• Used in Games to store check points
Observer DP
(object - Behavioral DP)
Observer DP
          (object - Behavioral DP)
• What
 • An Observer pattern is a design based on a one-to-many
   relationship, where one is a publisher that publishes an event
   against which many subscribers register an interest.

• Where
 • A requirement to initiate and manage communications among a
   society of objects.

• Why
 • To programmatically establish and manage a set of relationships
   among objects at run time.

• How
 • Create a subject object (publisher) and any number of observer
   objects (subscribers), and then wire an event handler in the observer
   objects to an event in the subject object. In .NET, we use a delegate
   event-handling model to wire the observer objects to the publisher's
   event—delegates simplify the architecture articulated by GoF.
Observer DP
(object - Behavioral DP)
Observer DP
(object - Behavioral DP)
Observer DP
(object - Behavioral DP)
State DP
         (object - Behavioral DP)
• What
 • Allow an object to alter its behavior when its internal
   state changes. The object will appear to change its
   class.
• Where
 • An object's behavior depends on its state, and it
   must change its behavior at run-time depending on
   that state.
• Why
 • This lets you treat the object's state as an object in
   its own right that can vary independently from other
   objects.
State DP
(object - Behavioral DP)
State DP
(object - Behavioral DP)
Strategy DP
          (object-behavioural DP)
• What
  • A design that presents a family of algorithms or business rules
    encapsulated in classes that can be swapped.
• Where
  • A requirement for the contextual implementation of different
    algorithms or business rules without the use of conditional
    code.
• Why
  • A design that separates the choice of algorithm or business
    rule from its implementation and delegates the contextual
    choice of algorithm or business rule to client code.
• How
  • Design an abstract strategy class that includes an abstract
    method from which an algorithm may be called. Prepare a
    context class to contain an abstract strategy class and then
    code the client to choose the strategy and inform the context
Strategy DP
(object-behavioural DP)
Template Method DP
         (Class - Behavioral DP)
• What
 • Need subclasses to house different implementations of an
   algorithm and defer part of the implementation to the
   subclass.

• Where
 • A requirement for a common structure to house an
   algorithm, while vary the implementation of the algorithm.

• Why
 • A default implementation that has the flexibility for a subclass
   to vary the underlying algorithm within the implementation.

• How
 • An abstract class exposes a Template Method that wraps a set
Template Method DP
(Class - Behavioral DP)
Template Method DP
(Class - Behavioral DP)
Template Method DP
     (Class - Behavioral DP)
• Factory Methods are often called by template
  methods. (DoCreateDocument called by
  OpenDocument).
• Template methods use inheritance to vary part of
  an algorithm. Strategies use delegation to vary
  the entire algorithm.
Report #3:

Interpreter DP
Visitor DP

N.B. Hand Written 
References
[1] Design Patterns, Christopher G. Lasater, Wordware Publishing, Inc.

[2] http://www.CodeProject.com, How I explained OOD to my wife, Al-
Farooque Shubho

[3]http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod,PrinciplesOf
Ood

[4]http://www.CodeProject.comHow I explained Design Patterns to my wife:
Part 1,By Al-FarooqueShubho

[5] http://www.shubho.net/2010/09/interface-vs-abstract-class-classic.html,
Al-FarooqueShubho

[6]C# 3.0 Design Patterns, Judith Bishop

[7]Head First Design Pattern, Eric Freeman, Elisabeth Freeman, Kathy
Sierra, Bert Bates

[8] Pro .NET 2.0 Code and Design Standards in C#, Mark Horner
The End
  Thank you
    and
  Good Luck

More Related Content

What's hot

Power of introspection
Power of introspectionPower of introspection
Power of introspection
Joseph Jeffrey
 
Object-Oriented Concepts
Object-Oriented ConceptsObject-Oriented Concepts
Object-Oriented Concepts
Abdalla Mahmoud
 

What's hot (19)

0-oop java-intro
0-oop java-intro0-oop java-intro
0-oop java-intro
 
Basic concept of OOP's
Basic concept of OOP'sBasic concept of OOP's
Basic concept of OOP's
 
OOP Unit 2 - Classes and Object
OOP Unit 2 - Classes and ObjectOOP Unit 2 - Classes and Object
OOP Unit 2 - Classes and Object
 
Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1 Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1
 
Chapter 8 java
Chapter 8 javaChapter 8 java
Chapter 8 java
 
Oops ppt
Oops pptOops ppt
Oops ppt
 
Power of introspection
Power of introspectionPower of introspection
Power of introspection
 
Object-oriented concepts
Object-oriented conceptsObject-oriented concepts
Object-oriented concepts
 
Object Oriented Programming In .Net
Object Oriented Programming In .NetObject Oriented Programming In .Net
Object Oriented Programming In .Net
 
Introduction to oop and java fundamentals
Introduction to oop and java fundamentalsIntroduction to oop and java fundamentals
Introduction to oop and java fundamentals
 
Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principles
 
Java essentials for hadoop
Java essentials for hadoopJava essentials for hadoop
Java essentials for hadoop
 
OOPS in Java
OOPS in JavaOOPS in Java
OOPS in Java
 
Beginners Guide to Object Orientation in PHP
Beginners Guide to Object Orientation in PHPBeginners Guide to Object Orientation in PHP
Beginners Guide to Object Orientation in PHP
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
 
Concepts of OOPs
Concepts of OOPsConcepts of OOPs
Concepts of OOPs
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Object-Oriented Concepts
Object-Oriented ConceptsObject-Oriented Concepts
Object-Oriented Concepts
 
Flyweight pattern
Flyweight patternFlyweight pattern
Flyweight pattern
 

Viewers also liked (7)

Command Design Pattern
Command Design PatternCommand Design Pattern
Command Design Pattern
 
Command Pattern in Ruby
Command Pattern in RubyCommand Pattern in Ruby
Command Pattern in Ruby
 
Command Design Pattern
Command Design PatternCommand Design Pattern
Command Design Pattern
 
Command Pattern
Command PatternCommand Pattern
Command Pattern
 
Generalized Functors - Realizing Command Design Pattern in C++
Generalized Functors - Realizing Command Design Pattern in C++Generalized Functors - Realizing Command Design Pattern in C++
Generalized Functors - Realizing Command Design Pattern in C++
 
Command pattern
Command patternCommand pattern
Command pattern
 
Composite Design Pattern
Composite Design PatternComposite Design Pattern
Composite Design Pattern
 

Similar to Design Pattern lecture 4

Marco Mancuso - Data Context Interaction
Marco Mancuso - Data Context InteractionMarco Mancuso - Data Context Interaction
Marco Mancuso - Data Context Interaction
cosenzaLab
 
Design PatternsEECS 3311Song Wang[email protected]ee
Design PatternsEECS 3311Song Wang[email protected]eeDesign PatternsEECS 3311Song Wang[email protected]ee
Design PatternsEECS 3311Song Wang[email protected]ee
LinaCovington707
 

Similar to Design Pattern lecture 4 (20)

Oo concepts and class modeling
Oo concepts and class modelingOo concepts and class modeling
Oo concepts and class modeling
 
Design Pattern lecture 2
Design Pattern lecture 2Design Pattern lecture 2
Design Pattern lecture 2
 
Chapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.pptChapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.ppt
 
Chapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.pptChapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.ppt
 
Behavioral pattern By:-Priyanka Pradhan
Behavioral pattern By:-Priyanka PradhanBehavioral pattern By:-Priyanka Pradhan
Behavioral pattern By:-Priyanka Pradhan
 
Design Pattern lecture 3
Design Pattern lecture 3Design Pattern lecture 3
Design Pattern lecture 3
 
common design patterns summary.pdf
common design patterns summary.pdfcommon design patterns summary.pdf
common design patterns summary.pdf
 
Introduction
IntroductionIntroduction
Introduction
 
Predictable reactive state management - ngrx
Predictable reactive state management - ngrxPredictable reactive state management - ngrx
Predictable reactive state management - ngrx
 
UNIT IV DESIGN PATTERNS.pptx
UNIT IV DESIGN PATTERNS.pptxUNIT IV DESIGN PATTERNS.pptx
UNIT IV DESIGN PATTERNS.pptx
 
Ooad ch 2
Ooad ch 2Ooad ch 2
Ooad ch 2
 
Iterator - a powerful but underappreciated design pattern
Iterator - a powerful but underappreciated design patternIterator - a powerful but underappreciated design pattern
Iterator - a powerful but underappreciated design pattern
 
Design pattern and their application
Design pattern and their applicationDesign pattern and their application
Design pattern and their application
 
Marco Mancuso - Data Context Interaction
Marco Mancuso - Data Context InteractionMarco Mancuso - Data Context Interaction
Marco Mancuso - Data Context Interaction
 
Style & Design Principles 02 - Design Patterns
Style & Design Principles 02 - Design PatternsStyle & Design Principles 02 - Design Patterns
Style & Design Principles 02 - Design Patterns
 
Design PatternsEECS 3311Song Wang[email protected]ee
Design PatternsEECS 3311Song Wang[email protected]eeDesign PatternsEECS 3311Song Wang[email protected]ee
Design PatternsEECS 3311Song Wang[email protected]ee
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
Software enginering.group-no-11 (1)
Software enginering.group-no-11 (1)Software enginering.group-no-11 (1)
Software enginering.group-no-11 (1)
 
software engineering Design Patterns.pdf
software  engineering Design   Patterns.pdfsoftware  engineering Design   Patterns.pdf
software engineering Design Patterns.pdf
 

More from Julie Iskander

More from Julie Iskander (20)

HTML 5
HTML 5HTML 5
HTML 5
 
Data structures and algorithms
Data structures and algorithmsData structures and algorithms
Data structures and algorithms
 
C for Engineers
C for EngineersC for Engineers
C for Engineers
 
Scriptaculous
ScriptaculousScriptaculous
Scriptaculous
 
Prototype Framework
Prototype FrameworkPrototype Framework
Prototype Framework
 
Design Pattern lecture 1
Design Pattern lecture 1Design Pattern lecture 1
Design Pattern lecture 1
 
Ajax and ASP.NET AJAX
Ajax and ASP.NET AJAXAjax and ASP.NET AJAX
Ajax and ASP.NET AJAX
 
jQuery
jQueryjQuery
jQuery
 
ASP.NET Lecture 5
ASP.NET Lecture 5ASP.NET Lecture 5
ASP.NET Lecture 5
 
ASP.NET lecture 8
ASP.NET lecture 8ASP.NET lecture 8
ASP.NET lecture 8
 
ASP.NET Lecture 7
ASP.NET Lecture 7ASP.NET Lecture 7
ASP.NET Lecture 7
 
ASP.NET Lecture 6
ASP.NET Lecture 6ASP.NET Lecture 6
ASP.NET Lecture 6
 
ASP.NET Lecture 4
ASP.NET Lecture 4ASP.NET Lecture 4
ASP.NET Lecture 4
 
ASP.NET Lecture 3
ASP.NET Lecture 3ASP.NET Lecture 3
ASP.NET Lecture 3
 
ASP.NET Lecture 2
ASP.NET Lecture 2ASP.NET Lecture 2
ASP.NET Lecture 2
 
ASP.NET Lecture 1
ASP.NET Lecture 1ASP.NET Lecture 1
ASP.NET Lecture 1
 
AJAX and JSON
AJAX and JSONAJAX and JSON
AJAX and JSON
 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
 
DOM and Events
DOM and EventsDOM and Events
DOM and Events
 
Introduction to Client-Side Javascript
Introduction to Client-Side JavascriptIntroduction to Client-Side Javascript
Introduction to Client-Side Javascript
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 

Design Pattern lecture 4

  • 1. Design Pattern By Julie Iskander MSc. Communication and Electronics
  • 2. Outlines Lecture 4 • Behavioral Design Patterns • Chain of Responsibility • Command • Mediator • Memento • Observer • State • Strategy • Template Method • Interpreter • Visitor • Iterator (Reading Assignment)
  • 4. Chain of responsibility DP • What • A replication of the business or functional process of delegating responsibility within a hierarchy. • Where • A requirement to manage tasks by coordinating objects and have them cooperate within a hierarchical structure. • Why • Avoid coupling sender of request to receiver • How • An abstract class that represents a participant or link is sub- classed into a set of links, and then the sub-classed links implement the functionality that represents their responsibility and can trigger the passing on of a requirement. The client determines the hierarchy among the links and initiates passing the requirement to the chain.
  • 10. Command DP (object - Behavioral DP)
  • 11. Command DP (object - Behavioral DP) • What • Encapsulate a request as an object, and support undoable operations. • Where • To issue requests to objects without knowing anything about the operation being requested or the receiver of the request. • Why • specify, queue, and execute requests at different times. support undo. support logging changes
  • 12. Command DP (object - Behavioral DP)
  • 13. Command DP (object - Behavioral DP)
  • 14. Command DP (object - Behavioral DP)
  • 15. Command DP (object - Behavioral DP)
  • 16. Command DP (object - Behavioral DP) • Supporting undo and redo: • Must provide a reverse method (Unexecute/Undo). • Might need to store additional state like the Receiver object, the arguments to the operation performed on the receiver, and any original values in the receiver that can change as a result of handling the request. • For one level of undo, store only the last executed command. • For multi-level undo, store a history list of executed commands.
  • 17. Mediator DP (object - Behavioral DP) • What • Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently. • Where • when many objects interconnect, to lessen the coupling • Why • To lessen the coupling between objects • How • Encapsulating collective behavior in a separate mediator object. A mediator is responsible for controlling and coordinating the interactions of a group of objects. The objects only know the mediator, thereby reducing the number of interconnections.
  • 18. Mediator DP (object - Behavioral DP)
  • 19. Mediator DP (object - Behavioral DP)
  • 20. Mediator DP (object - Behavioral DP)
  • 21. Mediator DP (object - Behavioral DP)
  • 22. Mediator DP (object - Behavioral DP)
  • 23. Mediator DP (object - Behavioral DP)
  • 24. Mediator DP (object - Behavioral DP) • Façade make requests to the subsystem, while mediator enables cooperative behaviour between colleagues objects
  • 25. MeMento DP (object - Behavioral DP) • What • capture and externalize an object's internal state so that the object can be restored to this state later. • Where • To store a snapshot of internal state of an object, to implement checkpoints • Why • To implement checkpoints, save state, undo mechanisms • How
  • 26. MeMento DP (object - Behavioral DP)
  • 27. MeMento DP (object - Behavioral DP)
  • 28. MeMento DP (object - Behavioral DP) • Memento objects are passive • Memento can be used to maintain state for undoable operations for Command DP • Used in Games to store check points
  • 29. Observer DP (object - Behavioral DP)
  • 30. Observer DP (object - Behavioral DP) • What • An Observer pattern is a design based on a one-to-many relationship, where one is a publisher that publishes an event against which many subscribers register an interest. • Where • A requirement to initiate and manage communications among a society of objects. • Why • To programmatically establish and manage a set of relationships among objects at run time. • How • Create a subject object (publisher) and any number of observer objects (subscribers), and then wire an event handler in the observer objects to an event in the subject object. In .NET, we use a delegate event-handling model to wire the observer objects to the publisher's event—delegates simplify the architecture articulated by GoF.
  • 31. Observer DP (object - Behavioral DP)
  • 32. Observer DP (object - Behavioral DP)
  • 33. Observer DP (object - Behavioral DP)
  • 34. State DP (object - Behavioral DP) • What • Allow an object to alter its behavior when its internal state changes. The object will appear to change its class. • Where • An object's behavior depends on its state, and it must change its behavior at run-time depending on that state. • Why • This lets you treat the object's state as an object in its own right that can vary independently from other objects.
  • 35. State DP (object - Behavioral DP)
  • 36. State DP (object - Behavioral DP)
  • 37. Strategy DP (object-behavioural DP) • What • A design that presents a family of algorithms or business rules encapsulated in classes that can be swapped. • Where • A requirement for the contextual implementation of different algorithms or business rules without the use of conditional code. • Why • A design that separates the choice of algorithm or business rule from its implementation and delegates the contextual choice of algorithm or business rule to client code. • How • Design an abstract strategy class that includes an abstract method from which an algorithm may be called. Prepare a context class to contain an abstract strategy class and then code the client to choose the strategy and inform the context
  • 39. Template Method DP (Class - Behavioral DP) • What • Need subclasses to house different implementations of an algorithm and defer part of the implementation to the subclass. • Where • A requirement for a common structure to house an algorithm, while vary the implementation of the algorithm. • Why • A default implementation that has the flexibility for a subclass to vary the underlying algorithm within the implementation. • How • An abstract class exposes a Template Method that wraps a set
  • 40. Template Method DP (Class - Behavioral DP)
  • 41. Template Method DP (Class - Behavioral DP)
  • 42. Template Method DP (Class - Behavioral DP) • Factory Methods are often called by template methods. (DoCreateDocument called by OpenDocument). • Template methods use inheritance to vary part of an algorithm. Strategies use delegation to vary the entire algorithm.
  • 43. Report #3: Interpreter DP Visitor DP N.B. Hand Written 
  • 44. References [1] Design Patterns, Christopher G. Lasater, Wordware Publishing, Inc. [2] http://www.CodeProject.com, How I explained OOD to my wife, Al- Farooque Shubho [3]http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod,PrinciplesOf Ood [4]http://www.CodeProject.comHow I explained Design Patterns to my wife: Part 1,By Al-FarooqueShubho [5] http://www.shubho.net/2010/09/interface-vs-abstract-class-classic.html, Al-FarooqueShubho [6]C# 3.0 Design Patterns, Judith Bishop [7]Head First Design Pattern, Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates [8] Pro .NET 2.0 Code and Design Standards in C#, Mark Horner
  • 45. The End Thank you and Good Luck

Editor's Notes

  1. A group of classes each have processes to run in turn, but there is no way to directly determine in which class order each should runits process
  2. Allows a request to an object to exist as an objectUsed for doing and undoing and storing a request queue for an objectExample: A document object needs a way to add and store undo and redo actions
  3. Allows group of objects to communicate in a disassociated manner and encapsulates this communication while keeping the objects loosely coupled.
  4. Capture an object’s internal state without violating encapsulation of the object, and preserve that state for some purpose.
  5. Originator class whose internal state to captureMemento  class in which we store the originator’s stateCaretaker  stores the memento until needed to restore the state or originator