Intent
Augment objects with new responsibilities.
Applicability
- when extension by subclassing is impractical
- when base class should be extensible with additional properties
Structure
[to do: diagram with Component, Decorator]
Consequences
- responsibilities can be dynamically attached
- avoids combinatorial class explosion "BorderedScrollableTextView"
- no feature laden base classes
- decorators can be nested
- more little classes
- impacts object identity
Implementation
- manual forwarding of requests
Uses in JHotDraw