Implementação do padrão de visitante em caso de indisponibilidade do código fonte
Um dos motivos para considerar oVisitor_pattern:
Um resultado prático dessa separação é a capacidade de adicionar novas operações às estruturas de objetos existentes sem modificar essas estruturas.
Suponha que você não tenha o código-fonte de bibliotecas de terceiros e tenha adicionado uma operação em objetos relacionados.
Como você não possui um objeto, seus elementos (classes de terceiros) não podem ser modificados para adicionar Visitor.
Nesse caso, o envio duplo não é possível.
Então, qual opção é geralmente preferida?
Option 1:
Estender mais uma hierarquia de herança em cima da classe de terceiros e implementar o padrão conforme mostrado na figura com despacho duplo?
Para uma dada hierarquia da Classe B que estende a Classe A, adicionarei
ElementA extends A
ElementB extends B
Agora ConcreteElements são derivados do ElementA em vez da classe A.
Contras: o número de classes aumentará.
Option 2:
Use a classe Visitor como uma classe auxiliar central e conclua o trabalho com um único envio.
Contras: Na verdade, não estamos seguindo o padrão do visitante, conforme o diagrama UML.
Corrija se estou errado.