Visitor (331) - Comportamental

  • Objetivo: Representar uma operação a ser realizada nos elementos de uma estrutura de objetos.

  • Permite definir uma nova operação sem mudar as classes dos elementos nos quais ele opera.

  • Exemplo do Gof: página 332: NodeVisitor e subclasses TypeCheckingVisitor e CodeGenerationVisitor. Em Java, poderíamos falar ainda de um nível a mais na hierarquia: BytecodeGenerationVisitor e NativeCodeGenerationVisitor.



  • Padrões relacionados: muitas vezes o visitante é usado para percorrer os elementos de um Composite; o visitante pode realizar a interpretação no padrão Interpreter.

  • Usos conhecidos: o compilador do Smalltalk-80 usa um Visitor para analisar código-fonte; ele poderia também ser usado para gerar código, formatar, colorir, etc. É usado em outros contextos, por exemplo toolkits para geração de gráficos 3D. As ações do software no mundo tridimensional podem ser executadas por visitantes.


  • Exercício: projeto uma arquitetura para um sistema de sua escolha que aplique os padrão Composite e Visitor e um terceiro padrão de sua escolha.

Última atualização: quinta-feira, 3 nov. 2022, 13:40