Maison  >  Article  >  Java  >  Le rôle du modèle proxy dans les modèles de conception

Le rôle du modèle proxy dans les modèles de conception

零下一度
零下一度original
2017-06-25 13:38:382371parcourir

1. Le rôle du mode proxy

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.

2. Rôles généralement impliqués dans le modèle proxy

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();
    }
}

Résumé

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn