Назад к вопросам
Middle
163
questionbank

Как адаптер связан с паттерном 'Адаптер' (Adapter)?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Адаптер в общих чертах — это "переходник" или "преобразователь", позволяющий несовместимым сущностям взаимодействовать.

Паттерн "Адаптер" в программировании реализует именно эту идею. Он позволяет классам с несовместимыми интерфейсами работать вместе, обертывая один класс в другой. Адаптер преобразует интерфейс одного класса в другой интерфейс, который ожидается клиентом.

Например:

// Несовместимый интерфейс
class OldSystem {
  oldRequest() {
    console.log("Запрос в старой системе");
  }
}

// Новый интерфейс, который ожидает клиент
class NewSystemTarget {
  request() {
    console.log("Запрос в новой системе");
  }
}

// Паттерн Адаптер
class OldSystemAdapter extends NewSystemTarget {
  constructor(oldSystem) {
    super();
    this.oldSystem = oldSystem;
  }

  request() {
    // Адаптер преобразует вызов нового интерфейса в вызов старого
    this.oldSystem.oldRequest();
  }
}

// Клиент работает с новым (целевым) интерфейсом
const oldSystem = new OldSystem();
const adapter = new OldSystemAdapter(oldSystem);

// Клиент вызывает метод request, не зная о внутренней работе OldSystem
adapter.request(); // Выводит "Запрос в старой системе"