No caso do Java, acredito que o melhor exemplo de decorator, usado na própria linguagem, é o InputStream. Você tem o InputStream que define o contato padrão da classe, e aí você tem várias implementações para leitura dos streams: FileInputStream, ByteArrayInputStream, BufferedInputStream. Cada uma dessas classes pode receber outro InputStream como entrada e acrescentar algum comportamento.
Bom demais! Entendi bem o conceito! Muito obrigado, Rinaldo! Ficou uma dúvida, caso eu queira injetar a implementação original (EnderecadorSimples), via construtor, eu vou quebrar o padrão?
No caso do Java, acredito que o melhor exemplo de decorator, usado na própria linguagem, é o InputStream.
Você tem o InputStream que define o contato padrão da classe, e aí você tem várias implementações para leitura dos streams: FileInputStream, ByteArrayInputStream, BufferedInputStream.
Cada uma dessas classes pode receber outro InputStream como entrada e acrescentar algum comportamento.
Exato, Luiz! Ótimos exemplos!
Bom demais! Entendi bem o conceito! Muito obrigado, Rinaldo!
Ficou uma dúvida, caso eu queira injetar a implementação original (EnderecadorSimples), via construtor, eu vou quebrar o padrão?
Conteúdo de máxima qualidade
Valew Rinaldo, tenho evoluido bastante com suas explicações dos padrões de projetos, quando serão postasdos mais videos dessa serie?
Valeu, Daniel. Amanhã sai mais um dessa série. ;)
Muito bom continue com essa periodicidade em seus vídeos.
Valeu!
Os decorator também podem ser usados com as anotations? Por exemplo, a ideia do bean validation é um exemplo de utilização de decorator?
Excelente explicação! Tenho uma dúvida, como fica a implementação utilizando injeção de dependência com spring ou quarkus?