Блог Слёрм

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

Казалось бы, что особенного в адаптере для розеток? Например, то, что есть структурный паттерн проектирования, который работает по тому же принципу. Рассказываем об этом на курсе «Архитектура приложений» и делимся кусочком лекции с вами 👇

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

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

  • адаптер;
  • мост;
  • компоновщик;
  • декоратор;
  • фасад;
  • легковес;
  • заместитель.

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

То же самое происходит и в программных системах. Как выглядит паттерн на диаграмме, показали на слайде выше 👆

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

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

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

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

Минус:

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

Узнать больше об адаптерах, научиться писать как разработчик, а думать как архитектор и создавать поддерживаемые системы можно на курсе «Архитектура приложений». Старт потока 26 мая. Занять место — по ссылке.
2025-04-30 00:00 Архитектура