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

В чем разница между шаблонами проектирования Adapter и Decorator

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

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

Decorator динамически добавляет новую функциональность объекту, не меняя его структуру, используя композицию. Пример:

java
interface Component { void operation(); }
class ConcreteComponent implements Component { /*...*/ }
class Decorator implements Component {
    private Component component;
    public void operation() { component.operation(); /* + доп. логика */ }
}

Ключевое отличие: Adapter меняет интерфейс, Decorator расширяет функциональность, сохраняя интерфейс.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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