Sobes.tech
Junior — Middle

Kas saaksite selgitada 'külastaja' mustri ja selle rakendust tarkvaraarenduses?

sobes.tech AI

Vastus AI-lt

«Külastaja» (Visitor) muster võimaldab eraldada algoritmid objektidest, millele nad rakenduvad. See määratleb operatsiooni, mis teostatakse objekti struktuuri elementidel, võimaldades lisada uusi operatsioone ilma elementide klasside muutmiseta.

Rakendused:

  • Kui on vaja teostada erinevaid operatsioone keeruka struktuuri objektidel.
  • Kui sageli lisatakse uusi operatsioone, kuid objektide struktuur jääb stabiilseks.

Näide C#-s:

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("ElementA töötlemine");
    }
    public void Visit(ElementB element) {
        Console.WriteLine("ElementB töötlemine");
    }
}

Siin saab uusi operatsioone lisada, luues uusi külastaja klasse, muutmata elementide klasse.