Шаблон посетителя позволяет добавлять функциональность к классам, не изменяя их. Вы сохраняете в одном месте / классе один и тот же тип поведения для разных типов объектов, в то же время (потенциально) имея разную реализацию для каждого типа. Вы можете расширить или изменить поведение для нескольких типов объектов, работая с одним классом (посетителем). Также полезно, когда вы хотите расширить поведение классов, которые не находятся под вашим контролем, без переноса или расширения их.
У посетителя драйвер поведения основан на том, от какого типа объекта выполняется операция.
Шаблон интерпретатора может использоваться для задач предметной области, которые могут быть выражены простым языком / предложениями. Тогда проблемы могут быть решены путем интерпретации этих предложений. Таким образом, мы получаем ввод, мы можем понять (интерпретировать) его и затем реализовать определенное поведение, основанное на интерпретации / категоризации ввода.
В интерпретаторе драйвер поведения основан на том, что является входом, интерпретации / категоризации ввода.