Junior
45
questionbank

Что такое паттерн адаптер?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Паттерн адаптер (Adapter Pattern) — структурный паттерн проектирования, который позволяет классам с несовместимыми интерфейсами работать вместе. Он действует как обертка, преобразующая интерфейс одного класса в другой, ожидаемый клиентом.

Применение:

  • Интеграция сторонних библиотек с несовместимыми интерфейсами.
  • Использование существующих классов в новых системах без их модификации.
  • Обеспечение взаимодействия между классами, разработанными независимо.

Пример реализации (объектный адаптер):

Представим, есть существующий класс LegacyService с методом oldRequest():

java

И новый интерфейс NewService с методом newRequest():

java

Адаптер ServiceAdapter реализует NewService и содержит ссылку на LegacyService:

java

Клиент может использовать LegacyService через интерфейс NewService:

java

Существует также разновидность — классный адаптер, который использует множественное наследование (если поддерживается языком) или наследование от адаптируемого класса и реализацию целевого интерфейса. В Java из-за отсутствия множественного наследования реализуется через наследование от адаптируемого класса и реализацию адаптерного интерфейса, но такой подход менее гибкий. Объектный адаптер более предпочтителен из-за возможности адаптировать подклассы и избегать жесткой связи.

Плюсы:

  • Позволяет совместное использование несовместимых классов.
  • Инкапсулирует детали преобразования интерфейсов.
  • Повышает гибкость системы.

Минусы:

  • Может увеличить сложность, добавляя новый класс.
  • Производительность может немного снизиться из-за дополнительного уровня абстракции.