Назад к вопросам
Junior — Middle
95
Каким образом паттерн Proxy выступает в роли посредника для оригинального объекта?
Ответ от нейросети
sobes.tech AI
Паттерн Proxy в Java выступает в роли посредника между клиентом и оригинальным объектом. Proxy контролирует доступ к этому объекту, может добавлять дополнительную логику до или после вызова методов оригинала, например, кэширование, проверку прав доступа, ленивую инициализацию или логирование.
Таким образом, клиент взаимодействует с 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();
}
}
// Использование:
Image image = new ProxyImage("photo.jpg");
image.display(); // загрузка и отображение
image.display(); // только отображение, загрузка не повторяется
В этом примере Proxy контролирует создание и доступ к реальному объекту, оптимизируя работу с ресурсами.