Вопрос один: почему все пишут его как на убогих плюсах?
Вот пример: http://en.wikipedia.org/wiki/Visitor_pattern#Sources
Нетрудно догадаться что если вместо мерзенького:
interface ICarElementVisitor {
void visit(Wheel wheel);
void visit(Engine engine);
void visit(Body body);
void visit(Car car);
}
Написать благословленное
interface ICarElementVisitor {
void visit(ICarElement element);
}
То мы получим одни преимущества:
1. при добавлении нового типа элемента ничего не надо переделывать
2. когда visitor выполняет общий для любого элемента код (это 99% случаев) нам не придется писать тампаксы в каждом visit
3. вместо жирного интерфейса (да в java без них никуда, чего стоит простой Collection) получаем функциональный - где можно легко и не принужденно использовать lambda
Почему же тогда большинство тупо копирует код в убогом стиле тех недоязычков где даже RTTI нету, может я чего-то не знаю?