Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot adaptera modeļa darbības principu un kādos gadījumos tas tiek izmantots?

sobes.tech AI

Atbilde no AI

Паттерн Адаптер (Adapter) используется для того, чтобы "адаптировать" интерфейс одного класса к интерфейсу, который ожидает клиент. Это позволяет классам с несовместимыми интерфейсами работать вместе.

Принцип работы:

  • Есть класс с определённым интерфейсом (Adaptee).
  • Есть клиент, который ожидает другой интерфейс (Target).
  • Адаптер реализует интерфейс Target и внутри себя содержит объект Adaptee.
  • Вызовы клиента перенаправляются адаптером к методам Adaptee, возможно с преобразованием данных.

Используют, когда нужно интегрировать старый код или сторонние библиотеки с несовместимым интерфейсом, не меняя их.

Пример на Java:

// Интерфейс, который ожидает клиент
interface Target {
    void request();
}

// Класс с несовместимым интерфейсом
class Adaptee {
    void specificRequest() {
        System.out.println("Вызов специфического метода");
    }
}

// Адаптер
class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void request() {
        adaptee.specificRequest();
    }
}

// Использование
public class Main {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target adapter = new Adapter(adaptee);
        adapter.request(); // Вызовет specificRequest через адаптер
    }
}