Mode agent
Le modèle proxy est appelé proxy ou substitut en anglais, et les deux peuvent être traduits par «agent» en chinois. Le soi-disant proxy signifie qu'une personne ou une institution prend des mesures au nom d'une autre personne ou d'une autre institution. Dans certains cas, un client ne veut pas ou ne peut pas se référer directement à un objet, et l'objet proxy peut agir comme un intermédiaire entre le client et l'objet cible
A. Rôle du thème abstrait
Déclare une interface commune entre les sujets réels et proxy, afin que tout sujet réel puisse être utilisé peut être utilisé.
B. Rôle de procuration:
Le rôle de thème de l'agent contient des références à de vrais sujets, afin que les objets de sujets réels puissent être utilisés à tout moment; Le rôle de thème de l'agent fournit la même interface que le rôle de sujet réel, afin qu'il puisse remplacer le sujet réel pour contrôler les références à des sujets réels à tout moment, et est responsable de la création d'objets de sujet réels (et de la suppression de vrais objets de sujet) en cas de besoin; Le rôle d'agent effectue généralement une opération avant ou après avoir passé l'appel client au sujet réel, plutôt que de simplement passer l'appel à l'objet de sujet réel.
C. Rôle du thème réel
Définit l'objet réel représenté par le rôle de proxy
Par exemple:
Refactorisation avec le mode proxy dynamique
Proxy dynamique JDK
Classe de proxy intercepteur de classe cible
Résumé: 1. Étant donné que la classe proxy générée par JDKProxy implémente l'interface, toutes les méthodes de la classe cible sont incluses dans la classe de proxy.
2. Toutes les méthodes de la classe proxy générée interceptent toutes les méthodes de la classe cible. Le contenu de la méthode invoquée dans l'intercepteur est exactement la composition de chaque méthode de la classe proxy.
3. Les interfaces doivent exister lors de l'utilisation de JDKProxy.
4. Les trois paramètres de la méthode Invoke peuvent accéder à l'API de la méthode appelée, les paramètres de la méthode appelée et le type de retour de la méthode appelée de la classe cible.
Refactorisation avec le mode proxy dynamique JDK
Reconstruire les transactions d'hibernate à l'aide du mode proxy dynamique JDK
proxy dynamique CGLIB
1. CGLIB est une bibliothèque de classe de génération de code puissante, haute performance et de haute qualité. Il peut étendre les classes Java et implémenter les interfaces Java pendant l'exécution.
2. Utilisez CGLIB pour générer une classe proxy comme sous-classe de la classe cible.
3. Aucune interface n'est requise pour générer des classes de proxy à l'aide de CGLIB
4. La classe proxy générée par CGLIB remplace les méthodes de la classe parent.
5. Le contenu de la méthode d'interception dans l'intercepteur est exactement le corps de la méthode dans la classe proxy.
Refactoring les transactions d'hibernate à l'aide du mode proxy dynamique CGLIB
Spring deux méthodes de proxy
1. Si l'objet cible implémente plusieurs interfaces, Spring utilise Java.lang.Reflect.Proxy Class Proxy de JDK.
Avantages: Parce qu'il y a des interfaces, le système est plus lâche. Inconvénients: Créez des interfaces pour chaque classe cible.
2. Si l'objet cible n'implémente aucune interface, Spring utilise la bibliothèque CGLIB pour générer une sous-classe de l'objet cible.
Avantages: Parce que la classe proxy et la classe cible sont héritées, il n'est pas nécessaire qu'une interface existe.
Inconvénients: Parce qu'il n'y a pas d'interface utilisée, le couplage du système n'est pas aussi bon que le proxy dynamique à l'aide de JDK.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.