Comments 8
Сегодня паттерн Посетитель в Java уже не нужен – лучше использовать переключатели паттернов
Это настолько ужасный перевод, что даже смешной. Пожалуйста, прокачайте своего переводчика. Я понял смысл только из-за того представляю о чем идет речь.
Современный Java – выбор победителей!
Ок, хорошая антиреклама ваших книг. В оригинальной статье имеется в виду другое:
Modern Java for the win!
Картинка красивая. Кто сосчитает группу симметрий узора?
В качестве извинений за оффтоп мой плюсик к статье.
используем паттерны типов в режиме переключения
для всех операций переключения паттернов
ЕМНИП, это называлось "сопоставление с образцом".
Hidden text
![](https://habrastorage.org/getpro/habr/upload_files/cf4/822/7cf/cf48227cf6c35ea6329afeb1677561c9.png)
Имхо, оригинальная статья - попытка натянуть сову на глобус: использовать switch-case выражения вместо полиморфизма.. современная Java, мало строк кода (гениальный возврат к макаронокоду прошлого через банальный пример с выводом строчки на консоль)
Вместо обхода произвольной структуры автор предлагает структуре Car самой собрать все свои внутренности в список, ну а потом уже просто пройтись по списку неким понравившимся автору способом. То есть обсуждаемый шаблон успешно забыт и сложность перенесена в корневую структуру, после чего нам демонстрируется как легко автор умеет ходить по плоским спискам, забывая о спрятанной в другом месте сложности.
Плюс, по моему, проблемы с несколькими разными типами посетителей. Будут либо "ифы" в методе print для каждого элемента, либо разные методы print, разделение которых тоже будет требовать какого-то "ифа".
Сегодня паттерн Посетитель в Java уже не нужен – лучше использовать переключатели паттернов