Decorator

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Ambox rewrite.svg
Esta página precisa ser reciclada de acordo com o livro de estilo (desde novembro de 2011).
Sinta-se livre para editá-la para que esta possa atingir um nível de qualidade superior.
NoFonti.svg
Este artigo ou se(c)ção cita fontes confiáveis e independentes, mas que não cobrem todo o conteúdo (desde novembro de 2011). Por favor, adicione mais referências e insira-as corretamente no texto ou no rodapé. Material sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)

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]

Intenção[editar | editar código-fonte]

  • 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 | editar código-fonte]

  • 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 | editar código-fonte]

  • 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 | editar código-fonte]

  • 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 | editar código-fonte]

  • 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

  1. SILVA, V. T. Padrões de Design. Acessado em janeiro de 2005.[ligação inativa]
Ícone de esboço Este artigo sobre Informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.