Die Codekopie lautet wie folgt:
Import Java.lang.reflect.InvocationHandler;
import Java.lang.reflect.Method;
importieren java.lang.reflect.proxy;
öffentliche Klasse LogHandler implementiert InvocationHandler {
privates Objektdelegierter;
öffentliches Objekt Bind (Objektdelegierter) {
this.delegate = delegate;
return proxy.newproxyInstance (delegate.getClass (). getClassloader (),
delegate.getClass (). getInterFaces (), dies);
}
@Override
öffentliches Objekt aufrufen (Object Proxy, Method -Methode, Objekt [] args)
wirft Throwable {
Objektergebnis = null;
versuchen {
System.out.println ("Methode starten:" + Methode);
result = methode.invoke (delegat, args);
System.out.println ("Methode End:" + Methode);
} catch (Ausnahme e) {
E. printstacktrace ();
}
Rückgabeergebnis;
}
}
Die Codekopie lautet wie folgt:
öffentliche Schnittstelle Tier {
public void hello ();
}
Dynamic Proxy ist eine erweiterte Form des Proxy-Modells und wird häufig für die Gestaltung und Entwicklung von Frameworks (insbesondere AOP-basierte Frameworks) verwendet.
Die Codekopie lautet wie folgt:
Öffentliche Klasse Monkey implementiert Tier {
@Override
public void hello () {
// Todo automatisch generierte Methode Stub
System.out.println ("Hallo");
}
}
Die Codekopie lautet wie folgt:
Hauptklasse Haupt {
public static void main (String [] args) {
LogHandler logHandler = new LogHandler ();
Animal Animal = (Tier) logHandler.bind (neuer Affen ());
Animal.hello ();
}
}