Upload
julie-iskander
View
544
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Behavioral Design Patterns Chain of Responsibility Command Mediator Memento Observer State Strategy Template Method Interpreter Visitor Iterator
Citation preview
Design PatternBy 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)
• 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.
Command DP(object - Behavioral DP)
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)
•Façade make requests to the subsystem, while mediator enables cooperative behaviour between colleagues objects
Mediator 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• use passive class to get and set state of Originator
class
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
MeMento 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)
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.
• How• Define state as an object on its own
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 class of the choice of strategy.
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 of functionality or methods, part of which is overridden by a subclass.
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.
Template Method DP(Class - Behavioral DP)
Report #3:
Interpreter DPVisitor 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,PrinciplesOfOod
[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