É um padrão que permite que você adicione funcionalidade para um objeto dinamicamente modificando seu comportamento.
Caso de uso:
Quando quisermos adicionar responsabilidades para um objeto dinamicamente.
Estrutura:
Vantagens:
- Possui a habilidade de adicionar funções dinamicamente antes ou depois.Possui a característica de permitir a criação de classes simples fazendo com que o conteúdo dessas classes seja apenas o necessário para modificar o método dinamicamente.
- Estende a funcionalidade do método sem utilizar o conceito de herança.Sendo assim, ele permite utilizar o conceito de herança para herdar outras funcionalidades mais importantes.
- Reutilização de código.Com o código separado em responsabilidades bem definidas, consigo utilizar o decorador para casos com responsabilidades bem definidas.
- Adiciona funcionalidades sem modificar a estrutura da base. Pois você utilizando um novo decorador, só precisa adicionar uma nova funcionalidade, pois a base já vai estar pronta.
Desvantagens:
- Aumenta a complexidade da criação do objeto. Pois para a criação do objeto, é preciso ter várias instanciações alinhadas, sendo assim, pode aumentar a complexidade, e isso pode acarretar em um problema de consistência.
- Acoplamento.
Pois um decorador pode depender de outro decorador.
- Manutenção.
Pois o acoplamento muito alto sempre gera um problema.
Nenhum comentário:
Postar um comentário
DÚVIDAS - CRITICAS - SUGESTÕES