Sobes.tech
Junior — Middle

Pode explicar o conceito do padrão 'visitante' e sua aplicação no design de programas?

sobes.tech IA

Resposta da IA

O padrão « visitante » (Visitor) permite separar os algoritmos dos objetos sobre os quais eles são executados. Ele define uma operação que é realizada sobre os elementos de uma estrutura de objetos, permitindo adicionar novas operações sem modificar as classes dos elementos.

Aplicação:

  • Quando é necessário realizar diferentes operações sobre objetos de uma estrutura complexa.
  • Quando novas operações são frequentemente adicionadas, mas a estrutura dos objetos permanece estável.

Exemplo em C#:

interface IVisitor {
    void Visit(ElementA element);
    void Visit(ElementB element);
}

interface IElement {
    void Accept(IVisitor visitor);
}

class ElementA : IElement {
    public void Accept(IVisitor visitor) {
        visitor.Visit(this);
    }
}

class ElementB : IElement {
    public void Accept(IVisitor visitor) {
        visitor.Visit(this);
    }
}

class ConcreteVisitor : IVisitor {
    public void Visit(ElementA element) {
        Console.WriteLine("Processamento de ElementA");
    }
    public void Visit(ElementB element) {
        Console.WriteLine("Processamento de ElementB");
    }
}

Aqui, novas operações podem ser adicionadas criando novas classes de visitantes, sem alterar as classes de elementos.