System Overview - Decorator pattern
The Decorator pattern allows adding new behaviors to objects dynamically without changing their structure. It helps to extend functionalities by wrapping objects with decorator classes that add features before or after delegating to the original object.
Key requirements include flexibility to add or remove features at runtime and keeping the original object code unchanged.