Behavioral design patterns are design patterns that identify common communication problems between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication, making the software more reliable and easy to mantain.
Examples of this type of design pattern include:
1.**Chain of responsibility pattern**: Command objects are handled or passed on to other objects by logic-containing processing objects.
2.**Command pattern**: Command objects encapsulate an action and its parameters.
3.**Interpreter pattern**: Implement a specialized computer language to rapidly solve a specific set of problems.
4.**Iterator pattern**: Iterators are used to access the elements of an aggregate object sequentially without exposing its underlying representation.
5.**Mediator pattern**: Provides a unified interface to a set of interfaces in a subsystem.
6.**Memento pattern**: Provides the ability to restore an object to its previous state (rollback).
7.**Null Object pattern**: Designed to act as a default value of an object.
8.**Observer pattern**: a.k.a. P**ublish/Subscribe** or **Event Listener**. Objects register to observe an event that may be raised by another object.