Behavioral patterns are concerned with the assignment of responsibilities between objects, or, encapsulating behavior in an object and delegating requests to it. Chain of Responsibility , Command , Mediator , and Observer , address how you can decouple senders and receivers, but with different trade-offs. Chain of Responsibility passes a sender request along a chain of potential receivers. Command normally specifies a sender-receiver connection with a subclass.
Mediator has senders and receivers reference each other indirectly.
Observer defines a very decoupled interface that allows for multiple receivers to be configured at run-time. Chain of Responsibility is often applied in conjunction with Composite . There, a component's parent can act as its successor. Polymorphism is important to Command , but not to Memento because its interface is so narrow that a memento can only be passed as a value. Command can use Memento to maintain the state required for an undo operation.