Decorator Pattern
Source:: Software Design Patterns - Best Practices for Software Developers
The decorator pattern adds new functionality to objects without modifying their defining classes. They can be used to modify existing systems where we wish to add additional features to objects without the need to heavily modify the underlying code using them.