Decorator
A Decorator is a design pattern used in software development that allows behavior to be added to individual objects, either statically or dynamically, without affecting the behavior of other objects from the same class. This pattern is particularly useful for adhering to the Single Responsibility Principle, as it enables the separation of concerns by allowing functionality to be added in a flexible manner.
In practical terms, a Decorator wraps an existing object, enhancing its capabilities. For example, in a graphical user interface, a basic Window object can be decorated with additional features like borders or scroll bars, creating a more complex Window without modifying the original class.