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

Каким образом работает паттерн Proxy и в чем его отличия от обычных объектов?

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

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

sobes.tech AI

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

Отличия Proxy от обычного объекта:

  • Proxy реализует тот же интерфейс, что и реальный объект, поэтому может использоваться вместо него.
  • Proxy управляет доступом к реальному объекту, добавляя дополнительную логику.
  • Клиент взаимодействует с Proxy, не зная о реальном объекте.

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

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