Ответ, на который вы ссылаетесь, значительно упускает из виду посетителя.В нем говорится, что «посетители используются для тестирования типов без ущерба для безопасности типов», что просто неверно.Книга GOF гласит: «Посетители позволяют вам определять новую операцию, не изменяя классы элементов, с которыми она работает».Посетителей, безусловно, можно использовать для тестирования объектов на предметах, отличных от шрифта, и для выполнения операций с объектами, которые не включают в себя тестирование.
Часто говорят «посетитель перебивает», но обычно говорят, что люди пытаютсяиспользовать Visitor для вещей, для которых он не предназначен, а затем найти этот сюрприз - он на самом деле не работает для него.
Постер прав в том, что второй фрагмент кода, который они цитируют, являетсяболее простой способ реализации функциональности, но он упускает из виду тот пункт, в котором предназначен посетитель, когда вы не хотите изменять класс Fruit.