Hey Leute,
versuche gerade den Sinn hinter dem Visito/Besucher Design-Pattern/Strukturmuster zu verstehen.
Betrachtet man Beispielsweise den zugehörigen Wiki-Artiklen, dann kann ich die Unklarheit zunächst am besten an dem angegebenen Beispiel erläutern:
Visitor ? Wikipedia
Ich finde Beispielsweise bei dem "PrintVisitor"
die Schleife unnötig umständlich. Warum macht man das Ganze nicht einfach so:
D.h. warum geht man als Besucher jedes Element durch (per for-Schleife) und sagt diesem (per " element.accept(this);"), dass er einen besuchen soll, was das Element anschließend macht (per "visitor.visit(this);").
Man kann doch viel besser als Besucher jedes Element durchgehen und dieses direkt besuchen, so wie ich es in meinem Ansatz versucht habe (ohne das man unnötige Umwege geht)
Das heißt das Verständnisproblem ist dass ich nicht verstehe, warum man den Elementen sagt sie sollen dem Besucher sagen, dass er sie besuchen soll und man nicht direkt dem Besucher reihenweise die Elemente gibt, die er besuch soll.
Viele Grüße und schönes Wochenende an alle
versuche gerade den Sinn hinter dem Visito/Besucher Design-Pattern/Strukturmuster zu verstehen.
Betrachtet man Beispielsweise den zugehörigen Wiki-Artiklen, dann kann ich die Unklarheit zunächst am besten an dem angegebenen Beispiel erläutern:
Visitor ? Wikipedia
Ich finde Beispielsweise bei dem "PrintVisitor"
Java:
class PrintVisitor implements Visitor {
public void visit(Wheel wheel) {
System.out.println("Visiting "+ wheel.getName()
+ " wheel");
}
public void visit(Engine engine) {
System.out.println("Visiting engine");
}
public void visit(Body body) {
System.out.println("Visiting body");
}
public void visit(Car car) {
System.out.println("\nVisiting car");
for(CarElement element : car.getElements()) {
element.accept(this);
}
System.out.println("Visited car");
}
}
die Schleife unnötig umständlich. Warum macht man das Ganze nicht einfach so:
Java:
class PrintVisitor implements Visitor {
public void visit(Wheel wheel) {
System.out.println("Visiting "+ wheel.getName()
+ " wheel");
}
public void visit(Engine engine) {
System.out.println("Visiting engine");
}
public void visit(Body body) {
System.out.println("Visiting body");
}
public void visit(Car car) {
System.out.println("\nVisiting car");
for(CarElement element : car.getElements()) {
this.visit(element); // HIER IST DIE ÄNDERUNG !!!
}
System.out.println("Visited car");
}
}
D.h. warum geht man als Besucher jedes Element durch (per for-Schleife) und sagt diesem (per " element.accept(this);"), dass er einen besuchen soll, was das Element anschließend macht (per "visitor.visit(this);").
Man kann doch viel besser als Besucher jedes Element durchgehen und dieses direkt besuchen, so wie ich es in meinem Ansatz versucht habe (ohne das man unnötige Umwege geht)
Das heißt das Verständnisproblem ist dass ich nicht verstehe, warum man den Elementen sagt sie sollen dem Besucher sagen, dass er sie besuchen soll und man nicht direkt dem Besucher reihenweise die Elemente gibt, die er besuch soll.
Viele Grüße und schönes Wochenende an alle