Паттерны на ruby: Шаблонный метод
Описание:
Данный шаблон позволяет переложить реализацию алгоритма манипулирования данными с класса-родителя, на классы потомки, которые созданы для каждого конкретного случая. Не меняя при этом входящие данные и не переписывая публичные методы.
Пример задачи:
Необходимо реализовать функционал генерации текстовых отчетов о товаров. Отчеты должны быть в форматах: обычный текст, json и html.
Реализация:
У нас есть абстрактный класс <AbstractReport> с публичным методом .create_report, который описывает реализацию создания отчета.
От него наследуются классы <TextReport>, <JSONReport> и <HTMLReport>.
Каждый из них переписывает только приватные методы класса и не трогает публичных методов.