Как адаптер связан с Coupling?
Продвинутые темы
Паттерн Адаптер связан с Coupling положительно: он снижает связанность между клиентом и несовместимым классом, вставляя промежуточный слой — клиент не зависит напрямую от чужого интерфейса.
Что делает Адаптер
Преобразует интерфейс одного класса в интерфейс, ожидаемый клиентом — «переходник»:
class RendererAdapter {
constructor(legacy) { this.legacy = legacy; }
render() { this.legacy.draw(); } // адаптирует несовместимый интерфейс
}Связь с Coupling (связанностью)
Coupling — насколько модули зависят друг от друга (нужна низкая).
Адаптер снижает связанность:
- Развязка клиента и адаптируемого класса — клиент зависит от ожидаемого интерфейса, а не от конкретного чужого/legacy класса. Между ними стоит адаптер.
- Изоляция изменений — если изменится адаптируемый класс, правки локализуются в адаптере, клиент не затрагивается.
- Замена реализации — можно подменить адаптируемый класс, поменяв только адаптер.
Клиент → [ожидаемый интерфейс] → Адаптер → Legacy-классКлиент не связан напрямую с Legacy — только через адаптер (низкая связанность).
Итог
Адаптер уменьшает Coupling, вставляя слой абстракции между клиентом и несовместимым классом. Это классический приём развязки — зависимость от интерфейса, а не от конкретной реализации.
Коротко для собеседования
Адаптер снижает Coupling (связанность): вставляет промежуточный слой между клиентом и несовместимым/legacy классом, так что клиент зависит от ожидаемого интерфейса, а не от конкретной чужой реализации. Изменения адаптируемого класса локализуются в адаптере, клиент не затрагивается — низкая связанность через абстракцию.