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

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

Оба шаблона добавляют дополнительное поведение к объекту, но с разными целями:

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

java
interface Image {
    void display();
}

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

class ProxyImage implements Image {
private RealImage realImage;

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

}

text

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

```java
interface Coffee {
    double getCost();
}

class SimpleCoffee implements Coffee {
    public double getCost() {
        return 1.0;
    }
}

class MilkDecorator implements Coffee {
    private Coffee coffee;
    
    public MilkDecorator(Coffee coffee) {
        this.coffee = coffee;
    }
    
    public double getCost() {
        return coffee.getCost() + 0.5;
    }
}

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

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

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

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

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