Материал из Википедии:
Идея заключалась в том, что после завершения реализация класса может быть изменена только до правильные ошибки; новые или измененные функции потребуют создания другого класса. Этот класс может повторно использовать кодирование из исходного класса через наследование
Из того, что я понимаю, шаблон "Посетитель" - это мощная техника для прохождения аналогичных, но разных объектов, реализующих один и тот же интерфейс с помощью двойной отправки. В одном из моих примеров Java я создал составной набор объектов, которые образуют древовидную структуру, и каждая конкретная реализация этих объектов реализует интерфейс, доступный для посещения. Интерфейс посетителя имеет метод для каждого из посещаемых объектов, а конкретный посетитель реализует, что делать для каждого из этих случаев.
То, что я пытаюсь понять, это тот факт, что если бы я добавил новую реализацию в составную структуру, которая также реализует доступность посещения, то мне нужно снова открыть интерфейс посетителя и добавить к нему этот случай, также заставляя меня модифицировать каждую реализацию посетителя.
Пока это нормально, так как мне все равно нужно это делать (что хорошего добавляет к вашим посетителям, если посетитель не может их понять?), но на академическом уровне это не нарушит принцип открытого закрытия? Разве это не одна из основных причин дизайна шаблонов? Попытка показать достойную причину перехода на этот шаблон вместо того, чтобы поддерживать оператор switch для завершения всех операторов switch, но все утверждают, что код будет таким же в любом случае, с методом для каждого случая, а не с коммутационным блоком, просто разбитым и труднее читать.