Назад к вопросам
IT One
Junior — Middle
108
Каким образом работает паттерн Proxy и в чем его отличия от обычных объектов?
Компании, где спрашивали
Ответ от нейросети
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, загружая изображение только при необходимости.