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

Можете объяснить концепцию паттерна прокси и его назначение в программировании?

Компании, где спрашивали
SimbirsoftSimbirsoft

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

sobes.tech AI

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

Назначение прокси:

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

Пример на 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("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();
    }
}

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

Здесь ProxyImage откладывает загрузку реального изображения до момента первого вызова display().