|Lesson 2||What is a behavioral pattern? |
|Objective||Define Behavioral Patterns|
Define Behavioral Design Patterns within the Context of the Gang of Four Patterns
A behavioral pattern explains how objects interact.
In addition, this pattern describes how different objects and classes send messages to each other to make things happen and how the steps of a task are divided among different objects.
- creational patterns mostly describe a moment of time (the instant of creation), and
- structural patterns describe a more or less static structure,
- behavioral patterns describe a process or a flow.
Behavioral class patterns
Behavioral class patterns use inheritance, subclassing, and polymorphism to adjust the steps taken during a process.
Furthermore, behavioral class patterns focus on changing the exact algorithm used or task performed depending on circumstances.
Behavioral object patterns
Behavioral object patterns describe how different objects work together to accomplish a task.
Behavioral object patterns accomplish tasks that would be difficult or impossible to accomplish with single objects.
Furthermore, they generally make the entire flow simpler, more understandable, and more robust than the
string-and-bailing-wire solutions that are built without a clear design in mind.
In software engineering, behavioral design patterns
are design patterns that identify common communication patterns between objects and realize these patterns.
By doing so, these patterns increase flexibility in carrying out this communication.
Examples of this type of design pattern include:
- Chain of responsibility pattern: Command objects are handled or passed on to other objects by logic-containing processing objects
- Command pattern: Command objects encapsulate an action and its parameters
- Externalize the Stack: Turn a recursive function into an iterative one that uses a stack.
- Hierarchical visitor pattern: Provide a way to visit every node in a hierarchical data structure such as a tree.
- Interpreter pattern: Implement a specialized computer language to rapidly solve a specific set of problems
- Iterator pattern: Iterators are used to access the elements of an aggregate object sequentially without exposing its underlying representation
- Mediator pattern: Provides a unified interface to a set of interfaces in a subsystem
- Memento pattern: Provides the ability to restore an object to its previous state (rollback)
- Null Object pattern: designed to act as a default value of an object
- Observer pattern: aka Publish/Subscribe or Event Listener. Objects register to observe an event that may be raised by another object
- Weak reference pattern: De-couple an observer from an observable.
- Protocol stack: Communications are handled by multiple layers, which form an encapsulation hierarchy.
- Scheduled-task pattern: A task is scheduled to be performed at a particular interval or clock time (used in real-time computing)
- Single-serving visitor pattern: Optimise the implementation of a visitor that is allocated, used only once, and then deleted
- Specification pattern: Recombinable Business logic in a boolean fashion
- State pattern: A clean way for an object to partially change its type at runtime
- Strategy pattern: Algorithms can be selected on the fly
- Template method pattern: Describes the program skeleton of a program
- Visitor pattern: A way to separate an algorithm from an object