Heim  >  Artikel  >  Java  >  So implementieren Sie das Proxy-Muster in Java-Entwurfsmustern

So implementieren Sie das Proxy-Muster in Java-Entwurfsmustern

王林
王林nach vorne
2023-05-13 18:34:06906Durchsuche

Was ist das Proxy-Muster?

Definition des Proxy-Musters: Aus bestimmten Gründen ist es notwendig, einem Objekt einen Proxy bereitzustellen, um den Zugriff auf das Objekt zu steuern. Zu diesem Zeitpunkt ist das Zugriffsobjekt nicht geeignet oder kann nicht direkt auf das Zielobjekt verweisen, und das Proxy-Objekt fungiert als Vermittler zwischen dem Zugriffsobjekt und dem Zielobjekt.

Vorteile

1. Der Proxy-Modus spielt eine Vermittlerrolle zwischen dem Client und dem Zielobjekt

2 kann Die Trennung von Client und Zielobjekt verringert die Kopplung des Systems bis zu einem gewissen Grad und erhöht die Skalierbarkeit des Programms

Nachteile

1 Der Proxy-Modus erhöht die Anzahl der Klassen im Systemdesign

2 . Auf dem Client führt das Hinzufügen eines Proxy-Objekts zu einer Verlangsamung der Anforderungsverarbeitung

Wissenspunkte

Die Struktur des Proxy-Modus Relativ einfach, hauptsächlich durch Definieren eines geerbten abstrakten Themas. Der Agent enthält das reale Thema, um Zugriff auf das reale Thema zu erhalten. Lassen Sie uns seine Grundstruktur und Implementierungsmethode analysieren.

Implementierung des Proxy-Modus

Fall: Die Patin von Da Bendai verkauft Wein

Abstrakte Subjektklasse (Subjekt): Wein verkaufen

Echte Subjektklasse (Real Subject): Taverne der Patin

Proxyklasse (Proxy): Big Bens Weinstand

Ben kam, um vor der Taverne seiner Schwiegermutter einen Stand aufzubauen, um Wein zu verkaufen.

Wein verkaufen

Eine Weinverkaufsschnittstelle deklariert eine abstrakte Methode zum Verkauf von Wein Der Name wird deklariert und eine aa()-Methode fordert Da Ben auf, einen Stand einzurichten

public interface Jiu {
    void show();
}

Da Bens Weinstand

Da Bens Weinstandklasse implementiert die Weinverkaufsschnittstelle und deklariert den Namen des Weins und die Eigenschaften der Patin des Wirtshauses und die Art und Weise des Weinverkaufs werden umgesetzt.

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

Test

new Bei einem großen Weinstand ist der zweimalige Aufruf der show()-Methode gleichbedeutend mit dem zweimaligen Verkauf von Wein.

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

Hier können Sie sehen, dass die Ausgabeergebnisse beim ersten Weinverkauf und beim zweiten Weinverkauf unterschiedlich sind, denn jedes Mal, wenn Sie Wein verkaufen, müssen Sie zur Taverne Ihrer Patin gehen, um den Wein zu holen . Als Da Ben zum ersten Mal kam, um den Wein zu holen, teilte er seiner Patin mit, dass ich hier sei, um den Stand aufzubauen. Später wusste die Patin bereits, dass Da Ben kommen würde, sodass es nicht nötig war, ihn zu benachrichtigen, als er ankam wieder der Wein.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Proxy-Muster in Java-Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen