Hallo,
ich hab mir ein Proxy Beispiel angesehen, welches so aussieht:
und so schaut die makeProxy- Methode aus:
Ich bin drauf gekommen, dass ich nicht ganz kapier, was ich dann mit dem Proxy- Objekt machen kann, wenn ich dann z.B. final Service proxySubject in der Hand hab -> da kann ich ja dann wieder nur die Methoden, welche im Interface Service definiert sind, aufrufen. Das könnte ich ja mit dem Original- Object auch machen.
Danke!
Poller
ich hab mir ein Proxy Beispiel angesehen, welches so aussieht:
Code:
public class Main {
public static void main(String[] args) {
final Service realSubject = new Subject_A();
final Service proxySubject = ProxyGenerator.makeProxy(Service.class, realSubject);
final String hello = proxySubject.work("Hello");
System.out.println("hello = " + hello);
System.out.println("\n");
System.out.println("realSubject: " + realSubject);
System.out.println("proxySubject: " + proxySubject);
}
}
und so schaut die makeProxy- Methode aus:
Code:
public class ProxyGenerator {
public static <P> P makeProxy(final Class<P> subject, final P realSubject) {
final Object proxyInstance = Proxy.newProxyInstance(subject.getClassLoader(), new Class<?>[] { subject },
(proxy, method, args) -> method.invoke(realSubject, args));
Service proxyService = (Service)subject.cast(proxyInstance);
return (P)proxyService;
}
}
Ich bin drauf gekommen, dass ich nicht ganz kapier, was ich dann mit dem Proxy- Objekt machen kann, wenn ich dann z.B. final Service proxySubject in der Hand hab -> da kann ich ja dann wieder nur die Methoden, welche im Interface Service definiert sind, aufrufen. Das könnte ich ja mit dem Original- Object auch machen.
Danke!
Poller