Junior — Middle
87
Ar proxy objektas sukuria naują tos pačios klasės egzempliorių kaip ir tikslinis objektas?
Įmonės kur klausė
Atsakymas iš AI
sobes.tech AI
Прокси-объект в Java обычно не создает новый экземпляр того же класса, что и целевой объект. Вместо этого прокси выступает как обёртка или посредник, который перехватывает вызовы методов и может добавить дополнительную логику (например, логирование, кэширование, транзакции).
Прокси реализует тот же интерфейс или наследует класс, но сам по себе не создает новый объект целевого класса при каждом вызове. Вместо этого он содержит ссылку на уже существующий целевой объект и делегирует вызовы ему.
Пример с использованием динамического прокси:
import java.lang.reflect.*;
interface Service {
void perform();
}
class RealService implements Service {
public void perform() {
System.out.println("Выполнение реальной работы");
}
}
class ProxyHandler implements InvocationHandler {
private final Object target;
public ProxyHandler(Object target) {
this.target = target;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Перед вызовом метода");
Object result = method.invoke(target, args);
System.out.println("После вызова метода");
return result;
}
}
public class Main {
public static void main(String[] args) {
Service real = new RealService();
Service proxy = (Service) Proxy.newProxyInstance(
Service.class.getClassLoader(),
new Class[]{Service.class},
new ProxyHandler(real));
proxy.perform();
}
}
Здесь прокси не создает новый RealService, а использует существующий объект real.