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

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

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

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

Facade предоставляет упрощенный интерфейс к сложной подсистеме, скрывая ее детали. Пример:

java
class CPU { void start() {} }
class Memory { void load() {} }
class ComputerFacade {
    private CPU cpu;
    private Memory memory;
    public void start() { cpu.start(); memory.load(); }
}

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

java
interface Image { void display(); }
class RealImage implements Image { public void display() {} }
class ProxyImage implements Image {
    private RealImage realImage;
    public void display() {
        if (realImage == null) realImage = new RealImage();
        realImage.display();
    }
}

Ключевые различия:

  • Adapter меняет интерфейс, Facade упрощает, Proxy контролирует доступ.
  • Adapter работает с одним классом, Facade — с подсистемой, Proxy — с одним объектом.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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