I\'m just reading up on the Chain of Responsibility pattern and I\'m having trouble imagining a scenario when I would prefer its use over that of decorator.
What do
Decorator
Decorator pattern allows behaviour to be added to an individual object dynamically.
It provides a flexible alternative to sub classing for extending functionality. Even though it uses inheritance, it inherit from Lowest Common Denominator ( LCD ) interface.
UML diagram for Decorator
Consequences:
Useful links:
When to Use the Decorator Pattern?
Decorator_pattern from wikipedia
decorator from sourcemaking
Chain of responsibility:
Chain-of-responsibility pattern is a design pattern consisting of a source of command objects and a series of processing objects. Each processing object contains logic that defines the types of command objects that it can handle; the rest are passed to the next processing object in the chain
UML Diagram
This pattern is more effective when:
Useful links:
Chain-of-responsibility_pattern from wikipedia
chain-of-responsibility-pattern from oodesign
chain_of_responsibility from sourcemaking
Real world example : In a company, a designated role have particular limits to process purchase request. If person with a designated role does not have enough power to approve purchase bill, he will forward the command/request to his successor, who have more power. This chain will continue until the command is processed.