Паттерн "Адаптер" (Adapter) в Java — совместимость с легаси и внешними SDK
Модель и масштаб — Основы БД, опорные темы, проектирование БД, пакетная работа. Карта — о разделе.
Обзор — в структурных паттернах. Здесь — практическая адаптация несовместимого интерфейса под контракт приложения.
Play ITЗагрузка интерактивного демо…
Задача паттерна
Adapter позволяет использовать существующий класс, чей интерфейс не совпадает с ожидаемым в системе.
Частый кейс — сторонний SDK или легаси-компонент, который менять нельзя.
Пример
Код ITЗагрузка примера кода…
Клиентский код работает только с NotificationService, не зная о деталях LegacySmsGateway.
Когда использовать
- интеграция внешней библиотеки с неудобным API;
- миграция легаси в новую архитектуру;
- необходимость изолировать внешний контракт в одном месте.
Adapter и Facade
| Adapter | Facade | |
|---|---|---|
| Цель | Преобразовать интерфейс | Упростить доступ к подсистеме |
| Объект | Часто один конкретный компонент | Группа компонентов |
См. также
- Структурные паттерны — Адаптер
- Abstract Factory в Java
- Фасад в Java
- внешний SDK и контракт API — 2.09 API, паттерны интеграции