Decorator Pattern

O "Decorator Pattern" é um padrão de design estrutural usado em programação para adicionar funcionalidades adicionais a objetos individualmente, sem alterar a estrutura da classe original. Esse padrão permite que você adicione responsabilidades a objetos de forma dinâmica, ou seja, em tempo de execução, por meio de uma composição de objetos.

Funciona envolvendo ou "decorando" um objeto com outras classes que implementam as novas funcionalidades desejadas. Estas classes são chamadas de "decoradores". Todos os decoradores compartilham um componente básico que eles estendem e, ao fazer isso, podem adicionar comportamentos antes ou depois de chamar métodos do objeto original, sem modificar o código-fonte do objeto que está sendo decorado.

Assim, ao invés de modificar uma classe diretamente, o Decorator Pattern promove uma estrutura flexível onde objetos podem ser decorados com diversas características ao mesmo tempo e de maneira controlada. Esse padrão é útil em situações onde precisos adicionar funcionalidades a objetos de forma seletiva e colaborativa.