Добавить в корзинуПозвонить
Найти в Дзене
Слёрм

Структурные паттерны проектирования. Адаптер

Структурные паттерны позволяют нам упростить работу со структурами или из более простых структур составить более комплексные и сложные. Виды структурных паттернов: Подробнее про паттерн «Адаптер» Каждый из вас, скорее всего, сталкивался с этим паттерном в реальной жизни. Например, вы могли заметить, что в некоторых странах ваш формат вилок для зарядки ноутбуков, фенов, утюгов не подходит к розеткам, и именно использование «адаптеров» помогает решить эту проблему. То же самое происходит и в программных системах. На диаграмме этот паттерн выглядит так: Допустим, у нас есть клиент, который умеет взаимодействовать с определённым интерфейсом, и есть система, которая может помочь решить его проблему, но интерфейс у неё другой. Клиентский код умеет общаться с интерфейсом, вызывая один метод, и передавать ему какие-то данные, но сервис, с которым нам предстоит взаимодействовать, имеет абсолютно другой метод и абсолютно другие данные. В этом случае самым простым и очень выручающим вариантом бу

Структурные паттерны позволяют нам упростить работу со структурами или из более простых структур составить более комплексные и сложные.

Виды структурных паттернов:

  • Адаптер;
  • Мост;
  • Компоновщик;
  • Декоратор;
  • Фасад;
  • Легковес;
  • Заместитель.

Подробнее про паттерн «Адаптер»

Каждый из вас, скорее всего, сталкивался с этим паттерном в реальной жизни. Например, вы могли заметить, что в некоторых странах ваш формат вилок для зарядки ноутбуков, фенов, утюгов не подходит к розеткам, и именно использование «адаптеров» помогает решить эту проблему. То же самое происходит и в программных системах.

На диаграмме этот паттерн выглядит так:

-2

Допустим, у нас есть клиент, который умеет взаимодействовать с определённым интерфейсом, и есть система, которая может помочь решить его проблему, но интерфейс у неё другой. Клиентский код умеет общаться с интерфейсом, вызывая один метод, и передавать ему какие-то данные, но сервис, с которым нам предстоит взаимодействовать, имеет абсолютно другой метод и абсолютно другие данные.

В этом случае самым простым и очень выручающим вариантом будет использование паттерна «Адаптер». Мы будем создавать специальный класс, который будет реализовывать интерфейс, с которым будет взаимодействовать клиент, и обращаться к нужному нам сервису с нужной функциональностью, но с другим интерфейсом.

Плюсы и минусы паттерна «Адаптер»

✅ Плюсы паттерна адаптер:

  • Создает «мост» между интерфейсами (адаптирует нашего клиента с привычными интерфейсом к незнакомому ему сервису или классу);
  • Изолирует от клиента подробности преобразования различных интерфейсов.

⛔ Минусы:

  • Сложно преобразовать параметры вызовов функций, если в адаптируемом интерфейсе другие абстракции.

Этот материал — часть лекции из курса «Архитектура приложений», на котором вы можете узнать ещё больше про паттерны проектирования  и научиться создавать поддерживаемые системы.