• Inheritance is not always flexible.
 • Composition and delegation is sometimes a good alternative to dynamically add new behavior.
 • Decorator type matches component type.
 • Decorators change component behavior without changing the component code.
 • A component may have arbitrary number of decorators.
 • Decorators are transparent to the client, unless the client depends on a particular component.
RULE: Open classes for extension and close for changes.