Chain of Responsibility

Avoid coupling the sender of a request to its receiver by giving more than one
object a chance to handle the request. Chain the receiving objects and pass the
request along the chain until an object handles it.
Applicability
- More than one object may handle the reqest, and the handler isn't known.
- Need to avoid specifying the reciever of a request explictly.
- Need to specify the set of handlers dynamically.
Consequences
- Reduces coupling
- Added flexibility in assigning responsibilities to objects
- Receipt isn't guaranteed