Adds responsibility to objects dynamically
Flexible alternative to subclassing
Client-specified embellishment of a core object by recursively wrapping
Recursive composition allows unlimited number of decorator layers to be added to core object.