Назад к вопросам
Junior — Middle
57
Можешь привести пример ситуации, когда используется паттерн прокси для контроля доступа или оптимизации работы объекта?
Ответ от нейросети
sobes.tech AI
Паттерн прокси часто используется для контроля доступа к ресурсоёмким объектам или для добавления дополнительной логики при обращении к объекту. Например, в 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("Загрузка " + filename);
}
public void display() {
System.out.println("Отображение " + 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(); // отображение без загрузки
Такой прокси контролирует доступ к реальному объекту и оптимизирует работу, откладывая тяжёлую операцию до необходимости.