Вопрос проверяет знание структурных паттернов и умение интегрировать несовместимые интерфейсы.
Adapter используется, когда интерфейс одного класса не подходит под ожидаемый интерфейс другого.
Он позволяет связать код без изменения существующих классов.
Паттерн часто применяется при интеграции сторонних библиотек или легаси-кода.
Это повышает переиспользуемость и снижает связность.
Adapter решает проблему несовместимости интерфейсов, не затрагивая исходную реализацию классов.
Adapter — это паттерн, который преобразует интерфейс одного класса в интерфейс, ожидаемый клиентом.
Типичные ситуации:
Подключение стороннего API
Работа с устаревшим кодом
Унификация разных реализаций
class OldPayment:
def pay_sum(self, amount):
...
class PaymentAdapter:
def __init__(self, service):
self.service = service
def pay(self, amount):
return self.service.pay_sum(amount)
Плюсы:
Нет изменений существующего кода
Чистая интеграция
Минусы:
Дополнительный слой абстракции
Adapter оправдан, когда требуется совместимость без переписывания кода.