Maison > Java > javaDidacticiel > le corps du texte

Comment implémenter le modèle de proxy dans les modèles de conception Java

王林
Libérer: 2023-05-13 18:34:06
avant
915 Les gens l'ont consulté

Qu'est-ce que le modèle de proxy ?

Définition du modèle de proxy : Pour certaines raisons, il est nécessaire de fournir un proxy à un objet pour contrôler l'accès à l'objet. À ce stade, l'objet d'accès n'est pas adapté ou ne peut pas référencer directement l'objet cible, et l'objet proxy agit comme intermédiaire entre l'objet d'accès et l'objet cible.

Avantages

1. Le mode proxy joue un rôle d'intermédiaire entre le client et l'objet cible et protège l'objet cible

2. L'objet proxy peut étendre les fonctions de l'objet cible ; peut La séparation du client et de l'objet cible réduit dans une certaine mesure le couplage du système et augmente l'évolutivité du programme

Inconvénients

1 Le mode proxy augmentera le nombre de classes dans la conception du système

2. . Sur le client L'ajout d'un objet proxy entre l'objet cible et l'objet cible ralentira la vitesse de traitement des requêtes

3 Augmente la complexité du système

Points de connaissance

La structure du mode proxy est ; relativement simple, principalement en définissant un thème abstrait hérité. L'agent contient le sujet réel pour accéder au sujet réel. Analysons sa structure de base et sa méthode de mise en œuvre.

Mise en place du mode proxy

Cas : La marraine de Da Bendai vend du vin

Classe de sujet abstrait (Subject) : vendre du vin

Classe de sujet réel (Real Subject) : la taverne de la marraine

Classe de proxy (Proxy) : le stand de vin de Big Ben

Ben est venu installer un stand devant la taverne de sa belle-mère pour vendre du vin.

Vendre du vin

Une interface de vente de vin déclare une méthode abstraite de vente de vin

public interface Jiu {
    void show();
}
Copier après la connexion

La taverne de ma marraine

La classe de taverne de ma marraine implémente l'interface de vente de vin et implémente la méthode show() de vente de vin, Un vin Le nom est déclaré et une méthode aa() invite Da Ben à installer un stand

public class GanNiang implements Jiu {
    private String name;
    GanNiang() {
    }
    GanNiang(String name) {
        this.name = name;
        aa();
    }
    @Override
    public void show() {
        System.out.printf("卖出一坛%s", name);
    }
    public void aa() {
        System.out.println("大奔来摆摊了");
    }
}
Copier après la connexion

Le stand de vin de Da Ben

La classe de stand de vin de Da Ben implémente l'interface de vente de vin et déclare le nom du vin et de la marraine. Les propriétés de la taverne et le mode de vente du vin sont mis en œuvre.

public class DaBen implements Jiu {
    private String name;
    private GanNiang ganNiang;
    DaBen() {
    }
    DaBen(String name) {
        this.name = name;
    }
    @Override
    public void show() {
        if (ganNiang == null) {
            ganNiang = new GanNiang(name);
        }
        ganNiang.show();
    }
}
Copier après la connexion

Test

new Un grand stand de vin, appeler deux fois la méthode show() équivaut à vendre du vin deux fois.

public class Demo {
    public static void main(String[] args) {
        DaBen daBen = new DaBen("女儿红");
        daBen.show();
        System.out.println();
        System.out.println();
        daBen.show();
    }
}
Copier après la connexion

Comment implémenter le modèle de proxy dans les modèles de conception JavaVous pouvez voir ici que les résultats de la vente du vin pour la première fois et de la vente du vin pour la deuxième fois sont différents, car chaque fois que vous vendez du vin, vous devez vous rendre à la taverne de votre marraine pour obtenir le vin. . Lorsque Da Ben est venu chercher le vin pour la première fois, il a informé sa marraine que j'étais là pour installer le stand. Plus tard, la marraine savait déjà que Da Ben allait venir, il n'était donc pas nécessaire de l'avertir quand il l'aurait reçu. encore le vin.

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal