interface ICarElementVisitor {
void visit(Engine engine);
}
interface ICarElement {
//want to use this
void accept(ICarElementVisitor visitor); // CarElements have to provide accept().
}
static class Engine implements ICarElement {
...
//want to avoid using this
public void accept(ICarElementVisitor visitor) {
visitor.visit(this);
}
}
...
public void accept(ICarElementVisitor visitor) {
for (ICarElement elem : elements) {
elem.accept(visitor);
}
visitor.visit(this);
}
...
static class CarElementDoVisitor implements ICarElementVisitor {
public void visit(Engine engine) {
System.out.println("Starting my engine");
}
}
Is there a way to avoid using method for self invoke inside every element in Visitor Pattern and use global method of parent class? Or if can i pass parent object and know what instance is that object without instanceof if or switch?