Перейти к основному содержимому

Паттерн "Адаптер" (Adapter) в Java — совместимость с легаси и внешними SDK

Разработчику Архитектору
Теория данных (раздел 3)

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

Play ITЗагрузка интерактивного демо…


Задача паттерна

Adapter позволяет использовать существующий класс, чей интерфейс не совпадает с ожидаемым в системе.

Частый кейс — сторонний SDK или легаси-компонент, который менять нельзя.


Пример

Код ITЗагрузка примера кода…

Клиентский код работает только с NotificationService, не зная о деталях LegacySmsGateway.


Когда использовать

  • интеграция внешней библиотеки с неудобным API;
  • миграция легаси в новую архитектуру;
  • необходимость изолировать внешний контракт в одном месте.

Adapter и Facade

AdapterFacade
ЦельПреобразовать интерфейсУпростить доступ к подсистеме
ОбъектЧасто один конкретный компонентГруппа компонентов

См. также