C# Design Patterns: Decorator
The decorator design pattern allows you to dynamically add behavior to your classes without modifying the original class. This allows you to layer in new functionality to a class while keeping different concerns cleanly separated.