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

Какое назначение у паттерна Proxy в разработке программных решений?

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

sobes.tech AI

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

  • Отложить создание ресурсоёмкого объекта (ленивая инициализация).
  • Контролировать доступ (например, проверка прав).
  • Логировать вызовы.
  • Кэшировать результаты.

В Java Proxy часто реализуется через интерфейсы или динамические прокси.

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

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("Loading " + filename);
    }
    public void display() {
        System.out.println("Displaying " + 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();
    }
}

Здесь ProxyImage контролирует создание RealImage и может оптимизировать работу с ним.