Agentenmodus
Das Proxy -Modell wird in Englisch als Proxy oder Ersatz bezeichnet und kann auf Chinesisch als "Agent" übersetzt werden. Der sogenannte Stellvertreter bedeutet, dass eine Person oder eine Institution im Namen einer anderen oder einer anderen Institution Maßnahmen ergriffen. In einigen Fällen möchte oder kann ein Kunde kein Objekt direkt verweisen, und das Proxy -Objekt kann als Vermittler zwischen dem Client und dem Zielobjekt fungieren
A. Abstrakte Themenrolle
Deklariert eine gemeinsame Schnittstelle zwischen realen und Proxy -Themen, sodass ein echtes Thema verwendet werden kann.
B. Proxy -Rolle:
Die Rolle des Agenten -Themas enthält Verweise auf echte Themen, damit echte Themenobjekte jederzeit betrieben werden können. Die Rolle der Agent -Themen bietet dieselbe Schnittstelle wie die tatsächliche Rolle, sodass sie das eigentliche Thema jederzeit ersetzen kann, um Referenzen auf reale Themen zu steuern, und ist dafür verantwortlich, echte Themenobjekte (und das Löschen von echten Themenobjekten) bei Bedarf zu erstellen. Die Agentrolle führt normalerweise vor oder nach dem Übergeben des Client -Anrufs an das eigentliche Thema durch, anstatt einfach den Anruf an das reale Themenobjekt weiterzugeben.
C. REALE THEMEN -Rolle
Definiert das reale Objekt, das durch die Proxyrolle dargestellt wird
Zum Beispiel:
Refactoring mit dem dynamischen Proxy -Modus
JDK Dynamic Proxy
Zielklasse Interceptor Proxy -Klasse
Zusammenfassung: 1. Da die von JDKProxy generierte Proxy -Klasse die Schnittstelle implementiert, sind alle Methoden in der Zielklasse in der Proxy -Klasse enthalten.
2. Alle Methoden der generierten Proxy -Klasse fangen alle Methoden der Zielklasse ab. Der Inhalt der Invoke -Methode im Interceptor ist genau die Zusammensetzung jeder Methode der Proxy -Klasse.
3.. Schnittstellen müssen bei der Verwendung von JDKProxy existieren.
4. Die drei Parameter in der Invoke -Methode können auf die API der aufgerufenen Methode, die Parameter der aufgerufenen Methode und den Rückgabetyp der aufgerufenen Methode der Zielklasse zugreifen.
Refactoring mit dem JDK Dynamic Proxy -Modus
Rekonstruktion von Hibernate -Transaktionen mithilfe des JDK Dynamic Proxy -Modus
CGGLIB Dynamic Proxy
1. CGGLIB ist eine leistungsstarke, leistungsstarke und hochwertige Bibliothek für Codegenerierung. Es kann Java -Klassen erweitern und während der Laufzeit Java -Schnittstellen implementieren.
2. Verwenden Sie CGlib, um eine Proxy -Klasse als Unterklasse der Zielklasse zu generieren.
3. Es ist keine Schnittstelle erforderlich, um Proxy -Klassen mit CGGLIB zu generieren
V.
5. Der Inhalt der Intercept -Methode im Interceptor ist genau der Methodenkörper in der Proxy -Klasse.
Refactoring Hibernate -Transaktionen mit dem CGGLIB Dynamic Proxy -Modus
Frühling zwei Proxy -Methoden
1. Wenn das Zielobjekt mehrere Schnittstellen implementiert, verwendet Spring Java.lang.reflect.proxy Class Proxy.
Vorteile: Da es Schnittstellen gibt, ist das System locker gekoppelt. Nachteile: Erstellen Sie Schnittstellen für jede Zielklasse.
2. Wenn das Zielobjekt keine Schnittstelle implementiert, verwendet Spring die CGGLIB -Bibliothek, um eine Unterklasse des Zielobjekts zu generieren.
Vorteile: Da die Proxy -Klasse und die Zielklasse vererbt sind, müssen keine Schnittstelle existiert.
Nachteile: Da keine Schnittstelle verwendet wird, ist die Kopplung des Systems nicht so gut wie der dynamische Proxy mit JDK.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.