Паттерны на ruby: Адаптер
Описание:
Данный паттерн обеспечивает совместную работу классов с несовместимым интерфейсом путем добавления недостающей логики
Пример задачи:
К готовому функционалу рендеринга html-тегов, добавить возможность совместимости с другими классами
Реализация:
У нас есть модуль TagCreator задача которого — рендерить html теги. На вход он ждет экземпляр класса <Tag>.
Также у нас есть класс <DivTag> в котором есть необходимая информация для рендеринга, но он не является наследником класса <Tag>, а следовательно у него другой интерфейс.
Для решения этой задачи достаточно создать класс <DivTagAdapter> который реализует недостающий интерфейс и берет на вход экземпляр класса <DivTag>.