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

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

王林
王林avant
2023-05-13 18:34:06926parcourir

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

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("大奔来摆摊了");
    }
}

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer