Decorator pattern

Decorator pattern