Le rôle du mode proxy est de fournir un proxy aux autres objets pour contrôler l'accès à cet objet.
Dans certains cas, un client ne veut pas ou ne peut pas référencer directement un autre objet, et un objet proxy peut agir comme intermédiaire entre le client et l'objet cible.
Rôle abstrait : déclare l'interface commune entre les objets réels et les objets proxy.
Rôle proxy : Le rôle d'objet proxy contient une référence à l'objet réel en interne, afin que l'objet réel puisse être manipulé en même temps, l'objet proxy fournit la même interface que. l'objet réel afin qu'il puisse remplacer l'objet réel à tout moment. Dans le même temps, l'objet proxy peut ajouter d'autres opérations lors de l'exécution d'opérations sur l'objet réel, ce qui équivaut à encapsuler l'objet réel.
Rôle réel : L'objet réel représenté par le rôle proxy est l'objet que nous voulons finalement référencer.
Illustration : Le programme suivant utilise un proxy statique pour implémenter une fonction de conversion de lettres majuscules.
Classe d'interface ISomeService :
package com.ietree.basicskill.designpattern.staticproxy;/** * 接口类 * * @author Root */public interface ISomeService { String doFirst(); void doSecond(); }
Classe d'implémentation SomeServiceImpl :
package com.ietree.basicskill.designpattern.staticproxy;/** * 实现类 * * @author Root */public class SomeServiceImpl implements ISomeService { @Overridepublic String doFirst() { System.out.println("执行doFirst()..."); String result = "abcde";return result; } @Overridepublic void doSecond() { System.out.println("执行doSecond()..."); } }
Classe proxy SomeServiceProxy :
SomeServiceProxy =
Classe de test Principal :
package com.ietree.basicskill.designpattern.staticproxy;public class Main {public static void main(String[] args) { ISomeService service = new SomeServiceProxy();String result = service.doFirst(); System.out.println(result); service.doSecond(); } }
Si vous souhaitez suivre la méthode ci-dessus ( proxy statique ) en utilisant le modèle de proxy, alors le rôle réel doit déjà être implémenté et en tant que propriété interne de l'objet proxy.
Mais dans l'utilisation réelle, un rôle réel doit correspondre à un rôle de proxy, mais s'il est utilisé en grande quantité, cela entraînera une expansion rapide de la classe en plus, si le rôle réel n'est pas connu dans ; avance, comment utiliser le proxy ? Ce problème peut être résolu par la classe proxy dynamique de Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!