Zu den Java-Proxys gehören der dynamische JDK-Proxy und der Cglib-Proxy. Der dynamische JDK-Proxy verwendet hauptsächlich den Java-Reflektionsmechanismus (d. h. das Paket java.lang.reflect).
Das Prinzip ist (Sänger und Manager sind Beispiele):
Richten Sie eine öffentliche Schnittstelle ein, z. B.: Singer, öffentliche Schnittstelle, Singer;
Verwenden Sie eine bestimmte Klasse, um die Schnittstelle zu implementieren, zum Beispiel: Jay Chou, er ist Sänger, also implementiert er die Singer-Klasse, die Klasse MySinger implementiert Singer
Erstellen Sie eine Agentenklasse, die hier der Broker ist. Er muss die InvocationHandler-Klasse implementieren und die Aufrufmethode neu schreiben, sodass Sie, wenn etwas passiert und Sie Jay Chou (konkrete Klasse) finden möchten, zuerst zum Broker (Agentenklasse) gehen müssen ), um damit umzugehen. Der Agent entscheidet, ob er sich mit Ihnen trifft (ob er diese Methode ausführt).
1. Singer-Schnittstelle
öffentliches abstraktes void sing();
öffentlicher abstrakter String s();
}
//Binden
öffentliche Objektbindung(Objektziel){
this.target=target;
//Proxy muss zurückgesetzt werden
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
//wieder
öffentlicher Objektaufruf (Objekt-Proxy, Methodenmethode, Objekt[]-Argumente)
wirft Throwable {
Objekt o =null;
System.out.println("Transaktion starten");
System.out.println("Berechtigungen beurteilen");
o = method.invoke(target, args);//Ausführungsmethode
System.out.println("Transaktion beenden");
Rückkehr o;
}
}