Sobes.tech
Junior — Middle
167

Чӣ тавр паттерни Proxy кор мекунад ва дар чӣ фарқ мекунад аз объектҳои оддӣ?

Ширкатҳо дар куҷо пурсиданд
IT OneIT One

Ҷавоб аз AI

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, загружая изображение только при необходимости.