Объясните различия между паттернами адаптер, декоратор и прокси, их назначения и области применения.

Паттерны адаптер, декоратор и прокси решают разные задачи, хотя все они работают с объектами и интерфейсами.

Короткий ответ

Что ответить на собеседовании

Паттерны адаптер, декоратор и прокси решают разные задачи, хотя все они работают с объектами и интерфейсами.

Подробный разбор

Ответ с пояснениями

Паттерны адаптер, декоратор и прокси решают разные задачи, хотя все они работают с объектами и интерфейсами.

  • Адаптер (Adapter) — преобразует интерфейс одного класса в интерфейс, ожидаемый клиентом. Используется, когда нужно интегрировать несовместимые интерфейсы.
  • Декоратор (Decorator) — динамически добавляет объектам новые обязанности, оборачивая их без изменения исходного класса. Позволяет расширять функциональность гибко.
  • Прокси (Proxy) — предоставляет суррогат или заместителя для другого объекта, контролируя доступ к нему. Часто используется для ленивой инициализации, контроля доступа или логирования.

Пример:

// Адаптер
interface Target {
    void request();
}
class Adaptee {
    void specificRequest() { /*...*/ }
}
class Adapter implements Target {
    private Adaptee adaptee = new Adaptee();
    public void request() {
        adaptee.specificRequest();
    }
}

// Декоратор
interface Component {
    void operation();
}
class ConcreteComponent implements Component {
    public void operation() { /* базовая реализация */ }
}
class Decorator implements Component {
    protected Component component;
    public Decorator(Component c) { this.component = c; }
    public void operation() {
        component.operation();
        // дополнительное поведение
    }
}

// Прокси
class Proxy implements Subject {
    private RealSubject realSubject;
    public void request() {
        if (realSubject == null) {
            realSubject = new RealSubject();
        }
        realSubject.request();
    }
}

Таким образом, адаптер меняет интерфейс, декоратор расширяет поведение, а прокси контролирует доступ к объекту.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее