Паттерны на ruby: Адаптер

Vladislav Kopylov
1 min readSep 16, 2017

--

Описание:
Данный паттерн обеспечивает совместную работу классов с несовместимым интерфейсом путем добавления недостающей логики

Пример задачи:
К готовому функционалу рендеринга html-тегов, добавить возможность совместимости с другими классами

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

--

--

Vladislav Kopylov
Vladislav Kopylov

No responses yet