Padrão Decorator
Padrão estrutural do Gang of Four — envolve um objeto e adiciona funcionalidade ao redor dele sem alterar a classe original.
Exemplo clássico: BufferedReader(FileReader(...)) — cada camada adiciona um comportamento (leitura em buffer, gzip, criptografia). A sintaxe @decorator do Python é suporte de linguagem para a mesma ideia, aplicada em tempo de definição.
Melhor que herança quando é preciso compor funcionalidades em tempo de execução. Risco: hierarquias de wrappers profundas ficam difíceis de depurar. Ponto forte: streams de I/O, pilhas de middleware (Express, ASP.NET), AOP.