Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Carlos R. M. Junior Eduardo Motta
Visitor Carlos R. M. Junior Eduardo Motta
2
Propósito do Padrão Representar operações a ser executadas nos elementos de uma estrutura de objetos; Permitir definir uma nova operação sem mudar as classes dos elementos sobre as quais opera.
3
Motivação Um compilador que representa programas como árvores sintáticas abstratas. Necessidade de execução de operações nas árvores sintáticas abstratas para análises “semânticas estáticas”;
4
Motivação Verificar se todas as variáveis estão definidas;
Geração de código executável. Operação de tipos; Otimização de código; Análise de fluxo; Verificação se as variáveis receberam valores antes de serem usadas.
5
Motivação Solução Inicial
6
Motivação Visitor
7
Aplicabilidade Estrutura de objetos contém muitas classes de objetos e deseja-se executar operações sobre esses objetos que dependem das classes concretas;
8
Aplicabilidade Muitas operações distintas e não-relacionadas de uma estrutura de objetos; Estrutura das classes raramente muda, porém, operações novas podem ser freqüentemente adicionadas.
9
Estrutura
10
Participantes Visitor ConcreteVisitor Element
Declara uma operação visit para cada classe ConcreteElement na estrutura do objeto. ConcreteVisitor Implementa uma operação. Element Define uma operação accept que aceita um visitante como um argumento.
11
Participantes ConcreteElement ObjectStructure
Implementa operação accept que aceita um visitante como um argumento. ObjectStructure Pode enumerar seus elementos; Pode fornecer uma interface de alto nível para permitir ao visitante visitar seus elementos; Poder ser uma coleção ou uma composição.
12
Colaboração
13
Consequências Visitor torna fácil a adição de novas operações;
Um visitor reúne operações relacionadas e separa as operações não-relacionadas. É difícil acrescentar novas classes ConcreteElement;
14
Consequências Visita hierarquia de classes; Acumula estados;
Rompe o encapsulamento.
15
Exemplos
16
Exemplos
17
Exemplos
18
Exemplos
19
Exemplos
20
crmarquesjc@gmail.com ed@eduardomotta.com
Dúvidas
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.