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