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

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

Декоратор и Proxy оба относятся к структурным паттернам, но решают разные задачи:

Proxy контролирует доступ к объекту, добавляя промежуточный слой. Он может кэшировать, лениво инициализировать или проверять права доступа, но не меняет поведение объекта.

java
interface Image {
    void display();
}

class RealImage implements Image {
    public void display() {
        System.out.println("Displaying real image");
    }
}

class ProxyImage implements Image {
private RealImage realImage;

text
public void display() {
    if (realImage == null) {
        realImage = new RealImage(); // Ленивая загрузка
    }
    realImage.display();
}

}

text

**Декоратор** динамически добавляет новую функциональность объекту, оборачивая его. Может добавлять несколько слоёв.

```java
abstract class CoffeeDecorator implements Coffee {
    protected Coffee decoratedCoffee;
    
    public CoffeeDecorator(Coffee coffee) {
        this.decoratedCoffee = coffee;
    }
}

class MilkDecorator extends CoffeeDecorator {
    public MilkDecorator(Coffee coffee) {
        super(coffee);
    }
    
    public double getCost() {
        return decoratedCoffee.getCost() + 0.5;
    }
}

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

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

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

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

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