The decorator structural pattern allows you to add new behavior to object instances dynamically. That means an object can change its behavior at run time. The interesting thing is that your objects do not even know they have been changed.
See All 304 Episodes of "Take Up Code"