Sobes.tech
Junior — Middle

Bir nesnenin erişimini kontrol etmek veya çalışmasını optimize etmek için proxy deseni kullanıldığı bir duruma örnek verebilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Паттерн прокси часто используется для контроля доступа к ресурсоёмким объектам или для добавления дополнительной логики при обращении к объекту. Например, в 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(); // отображение без загрузки

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