Sobes.tech
Назад к вопросам
Junior — Middle
57

Можешь привести пример ситуации, когда используется паттерн прокси для контроля доступа или оптимизации работы объекта?

Ответ от нейросети

sobes.tech AI

Паттерн прокси часто используется для контроля доступа к ресурсоёмким объектам или для добавления дополнительной логики при обращении к объекту. Например, в Java можно создать прокси для ленивой загрузки большого изображения — реальное изображение загружается только при первом вызове метода отображения, а до этого прокси просто хранит путь к файлу.

interface Image {
    void display();
}

class RealImage implements Image {
    private String filename;

    public RealImage(String filename) {
        this.filename = filename;
        loadFromDisk();
    }

    private void loadFromDisk() {
        System.out.println("Загрузка " + filename);
    }

    public void display() {
        System.out.println("Отображение " + filename);
    }
}

class ProxyImage implements Image {
    private RealImage realImage;
    private String filename;

    public ProxyImage(String filename) {
        this.filename = filename;
    }

    public void display() {
        if (realImage == null) {
            realImage = new RealImage(filename); // загрузка при первом вызове
        }
        realImage.display();
    }
}

// Использование
Image image = new ProxyImage("photo.jpg");
// Изображение не загружается сразу
image.display(); // загрузка и отображение
image.display(); // отображение без загрузки

Такой прокси контролирует доступ к реальному объекту и оптимизирует работу, откладывая тяжёлую операцию до необходимости.