Встречается на собеседованиях • сегодня

В чем разница между паттернами адаптер и декоратор и прокси

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

java
interface Target { void request(); }
class Adaptee { void specificRequest() { /*...*/ } }
class Adapter implements Target {
    private Adaptee adaptee;
    public void request() { adaptee.specificRequest(); }
}

Декоратор динамически добавляет новую функциональность объекту, не изменяя его класса. Обёртывает объект, расширяя его поведение.

java
interface Component { void operation(); }
class ConcreteComponent implements Component { /*...*/ }
class Decorator implements Component {
    private Component component;
    public void operation() { component.operation(); /* + extra */ }
}

Прокси контролирует доступ к объекту, добавляя логику (ленивая инициализация, кеширование, проверка прав).

java
interface Service { void doWork(); }
class RealService implements Service { /*...*/ }
class Proxy implements Service {
    private RealService service;
    public void doWork() { /* проверка доступа */ service.doWork(); }
}

Ключевые отличия:

  • Адаптер меняет интерфейс, декоратор и прокси — нет.
  • Декоратор добавляет функциональность, прокси — контроль доступа.
  • Прокси управляет жизненным циклом объекта, адаптер/декоратор — нет.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы