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.

questionAnswers(6)

yourAnswerToTheQuestion