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

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

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

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

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

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

// Клиент ожидает интерфейс { render() }
class LegacyRenderer {
  draw() { /* старый метод */ }
}

class RendererAdapter {
  constructor(legacy) { this.legacy = legacy; }
  render() { this.legacy.draw(); } // адаптирует draw → render
}

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

Cohesion — насколько логически связаны обязанности внутри модуля (нужна высокая).

Адаптер повышает связность:

  • Единая ответственность — адаптер занимается только преобразованием интерфейсов, ничем больше. Это высокая связность (сфокусированный класс).
  • Инкапсуляция преобразования — вся логика адаптации собрана в одном месте, а не размазана по клиентскому коду.
  • Чистота клиента — клиент работает с ожидаемым интерфейсом, не смешивая свою логику с преобразованием.

Итог

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

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

Адаптер повышает Cohesion (связность): он инкапсулирует логику преобразования несовместимых интерфейсов в одном сфокусированном классе с единственной ответственностью (только адаптация). Это высокая связность — вместо размазывания преобразования по клиентскому коду оно собрано в одном месте.

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