PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Как адаптер связан с Coupling?

Продвинутые темы

Паттерн Адаптер связан с Coupling положительно: он снижает связанность между клиентом и несовместимым классом, вставляя промежуточный слой — клиент не зависит напрямую от чужого интерфейса.

Что делает Адаптер

Преобразует интерфейс одного класса в интерфейс, ожидаемый клиентом — «переходник»:

class RendererAdapter {
  constructor(legacy) { this.legacy = legacy; }
  render() { this.legacy.draw(); } // адаптирует несовместимый интерфейс
}

Связь с Coupling (связанностью)

Coupling — насколько модули зависят друг от друга (нужна низкая).

Адаптер снижает связанность:

  • Развязка клиента и адаптируемого класса — клиент зависит от ожидаемого интерфейса, а не от конкретного чужого/legacy класса. Между ними стоит адаптер.
  • Изоляция изменений — если изменится адаптируемый класс, правки локализуются в адаптере, клиент не затрагивается.
  • Замена реализации — можно подменить адаптируемый класс, поменяв только адаптер.
Клиент → [ожидаемый интерфейс] → Адаптер → Legacy-класс

Клиент не связан напрямую с Legacy — только через адаптер (низкая связанность).

Итог

Адаптер уменьшает Coupling, вставляя слой абстракции между клиентом и несовместимым классом. Это классический приём развязки — зависимость от интерфейса, а не от конкретной реализации.

Коротко для собеседования

Адаптер снижает Coupling (связанность): вставляет промежуточный слой между клиентом и несовместимым/legacy классом, так что клиент зависит от ожидаемого интерфейса, а не от конкретной чужой реализации. Изменения адаптируемого класса локализуются в адаптере, клиент не затрагивается — низкая связанность через абстракцию.

Другие вопросы раздела