Cada una de estas clases elemento tiene un método aceptar (accept()) que recibe al objeto visitante (visitor) como argumento.
Así el patrón visitor simula el envío doble (en inglés este término se conoce como Double-Dispatch) en un lenguaje convencional orientado a objetos de envío único (Single-Dispatch), como son Java o C++.
El patrón visitor también especifica cómo sucede la interacción en la estructura del objeto.
Este patrón es ampliamente utilizado en intérpretes, compiladores y procesadores de lenguajes, en general.
A continuación se detalla un caso en el que sería de gran utilidad aplicar dicho patrón
Los patrones de diseño sugieren que el visitante puede proporcionar una funcionalidad adicional a una clase sin cambiarla.
Se pueden tener problemas con la encapsulación, la solución para ello es que como los atributos de los elementos no pueden ser públicos se hace que todo este en un mismo paquete, es decir, visibilidad de paquete.