Вопрос проверяет понимание паттерна Адаптер для интеграции систем с несовместимыми интерфейсами.
Паттерн Адаптер (Adapter) — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами взаимодействовать. Он действует как прослойка, преобразуя вызовы одного интерфейса в вызовы другого. Это особенно полезно при интеграции систем, когда вы не можете или не хотите изменять существующий код.
Адаптер содержит ссылку на адаптируемый объект и реализует целевой интерфейс. Когда клиент вызывает метод адаптера, тот делегирует выполнение адаптируемому объекту, возможно, с преобразованием данных или формата вызова.
// Целевой интерфейс, ожидаемый клиентом
class Target {
request() {
return 'Target: Default behavior';
}
}
// Адаптируемый класс с несовместимым интерфейсом
class Adaptee {
specificRequest() {
return 'Adaptee: Specific behavior';
}
}
// Адаптер
class Adapter extends Target {
constructor(adaptee) {
super();
this.adaptee = adaptee;
}
request() {
const result = this.adaptee.specificRequest();
return `Adapter: (TRANSLATED) ${result}`;
}
}
// Использование
const adaptee = new Adaptee();
const adapter = new Adapter(adaptee);
console.log(adapter.request()); // Adapter: (TRANSLATED) Adaptee: Specific behaviorВывод: Паттерн Адаптер стоит применять, когда нужно объединить системы с разными интерфейсами без изменения их исходного кода. Он упрощает интеграцию и повышает гибкость архитектуры.