Я видел примеры в обоих направлениях, в частности, в Википедии показан пример, где посетивший объект решает порядок посещения, и я думаю, что это звуковой подход.Шаблон посетителя: должен ли посетитель или посетивший объект принять решение о посещении?
Я нахожусь в ситуации, когда мне понадобится несколько распоряжений о посещении, поэтому представляется разумным разрешить посетителю принять решение о посещении. Однако, если посетитель несет ответственность за заказ на посещение (т. Е. Для вызова метода accept для объекта, который вы посещаете), я мог бы заставить посетителя напрямую вызвать какой-либо метод посещения (т. Е. Обойти вызов метода принятия объекта посещения) и это кажется совершенно противоположным тому, что предлагает шаблон.
Каков правильный способ реализации шаблона посещения и как действовать, когда у нас есть несколько разных заказов на посещение?
Спасибо, я собирался заглянуть в GoF. Мой второй пункт все еще остается. Что хорошего в методе «принять» объект, если метод «посещения» одного посетителя может сразу вызвать другие методы «посещения»? – JohnTortugo
Шаблоны помогают вам общаться с другими разработчиками. Когда я вижу ваш код, я могу заметить шаблон посетителя и ожидать, что вы вызовете метод accept. Если вы вызываете что-то еще, я становлюсь подозрительным и начинаю думать, если это из-за чего-то, чего я не понимаю. Это цель метода accept. Если вы кодируете API для других, чтобы использовать и хотите, чтобы клиенты не вызывали другие методы, добавьте еще один уровень абстракции. Если это частный код, просто не вызывайте другие методы. –