Decorator
Origem: Wikipédia, a enciclopédia livre.
Decorator ou wrapper, é um padrão de projeto de software que permite adicionar um comportamento a um objeto já existente em tempo de execução, ou seja, agrega dinamicamente responsabilidades adicionais a um objeto.1
Índice |
Intenção [editar]
- Acrescentar responsabilidades a um objeto dinamicamente
- Prover alternativa flexível ao uso de subclasses para se estender a funcionalidade de uma classe
Motivação [editar]
- Objeto usado possui as funcionalidades básicas, mas é necessário adicionar funcionalidades adicionais a ele que podem ocorrer antes ou depois da funcionalidade básica
- Funcionalidades devem ser adicionadas em instancias individuais e não na classe.
Consequências [editar]
- Mais flexibilidade do que herança
- Adição ou remoção de responsabilidades em tempo de execução
- Adição da mesma propriedade mais de uma vez
- Evita o excesso de funcionalidades nas classes
- Decorator e seu componente não são idênticos
- Comparações tornam-se mais complexas
- Resulta em um design que tem vários pequenos objetos, todos parecidos
Aplicabilidade [editar]
- Acrescentar ou remover responsabilidades a objetos individuais dinamicamente, de forma transparente
- Evitar a explosão de subclasses para prover todas as combinações de responsabilidades
Padrões relacionados [editar]
- Adapter: Decorator muda comportamento; Adapter muda interface
- Composite: Pode ser visto como um composite com um único componente; porém, não tem intenção de agregar objetos
- Strategy: Decorator envolve o objeto; Strategy muda o funcionamento interno
Referências
- ↑ SILVA, V. T. Padrões de Design. Acessado em janeiro de 2005.[ligação inativa]