Паттерны на ruby: Посетитель

Описание: Данный паттерн хорош, если вам нужно реализовать простой интерфейс позволяющий проводить множество действий над разными объектами.

Пример задачи: Для rails-приложения нужно написать логику создания отчетов в разные форматы для разных классов моделей. Например для модели <User> и <Order> необходимы выгрузки в XML и JSON форматах.

Реализация: Для классов <User> и <Order>, необходимо написать метод .accept который вызывает нужный метод класса-посетителя. Для логики выгрузки в форматы XML и JSON необходимо написать классы <XMLExportVisitor> и <JSONExportVisitor> у которых будет по одному методу, на каждую посещенную модель.