Este artigonão citafontes confiáveis. Ajude ainserir referências. Conteúdo nãoverificável pode ser removido.—Encontre fontes:ABW • CAPES • Google (notícias • livros • acadêmico)(Outubro de 2016) |
Em programaçãoorientada a objetos eengenharia de software, ovisitor pattern é umpadrão de projeto comportamental. Representa uma operação a ser realizada sobre elementos da estrutura de um objeto. O Visitor permite que se crie uma nova operação sem que se mude a classe dos elementos sobre as quais ela opera. É uma maneira de separar umalgoritmo da estrutura de um objeto. Um resultado prático é a habilidade de adicionar novas funcionalidades a estruturas de um objeto preexistente sem a necessidade de modificá-las.
A ideia é usar uma classe de elementos como uma estrutura, sendo que cada uma delas possui um método cujo um dos argumentos é um objeto do tipovisitor
.Visitor
é umainterface que possui um métodovisit()
para cada classe de elementos. O métodoaccept()
de uma classe de elementos invoca o métodovisit()
de sua respectiva classe. Classesvisitor
concretas distintas podem então ser escritas para implementar operações especiais.
O padrão Visitor é uma solução para separar o algoritmo da estrutura. Uma das vantagens desse padrão é a habilidade de adicionar novas operações a uma estrutura já existente. Com ele, podemos ter a classe ObjetoSolido e o comportamento de queda em uma classe Gravidade, separada da estrutura do ObjetoSolido. Isso é feito através de uma interface, onde o objeto que vai executar esse método da classe do comportamento, passa uma referencia dela mesmo junto dos parâmetros normais da classe.No caso desse exemplo, teríamos:
Visitorgravidade=newGravidade();//esse é o nosso visitor, responsável pelo comportamento de queda.Solidosolido=newSolido("caixa");//solido que recebera o comportamentosolido.accept(gravidade);//recebe o comportamento Gravidade
Internamente, o método accept(Visitor visitor) de Solido faz o seguinte:
publicvoidaccept(Visitorvisitor){visitor.visitSolido(this);}
Ao passar para o Visitor uma referencia de si mesmo, o visitor pode acessar os métodos e atributos públicos dessa classe, que no nosso caso, vai adicionar a aceleração da gravidade ao Solido. Assim como o comportamento de queda foi adicionado, outros também poderiam ser feitos da mesma maneira, como movimentação através doteclado, sons... as possibilidades são infinitas.
![]() | Este artigo sobresoftware é umesboço. Você pode ajudar a Wikipédiaexpandindo-o. |