suchen
HeimJavajavaLernprogrammSo verstehen Sie den Proxy-Modus von Java

    Agentenmodus: statischer Proxy

    Manchmal möchten wir vielleicht etwas oder jemandem nicht direkt gegenübertreten, also können wir es Finden Sie eine Agentur, die das für uns erledigt, z. B. Geschenke verschicken und Besorgungen machen lassen, eine Reinigungskraft in derselben Stadt finden usw. Auf diese Weise weiß die Gegenpartei nicht, wer hinter dem Vermittler steht, und übernimmt die Rolle eines Vermittlers und schützt das Zielobjekt. Dies ist das Agenturmodell. Das heißt, ein Vermittler erledigt das für Sie.

    So verstehen Sie den Proxy-Modus von Java

    1. Definition des Proxy-Modus

    Aus bestimmten Gründen ist es notwendig, einen Proxy für ein Objekt zur Steuerung bereitzustellen Objektbesichtigung. 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 #2. Vor- und Nachteile des Agenturmodells

    Vorteile:

    1 .Spielt eine Mittlerrolle zwischen dem Kunden und dem Zielobjekt und Schützt das ZielobjektSo verstehen Sie den Proxy-Modus von Java

    2. Kann die Funktion des Zielobjekts erweitern

    3 Kann den Client umwandeln Umfang und erhöht die Skalierbarkeit des Programms (da es eine oder mehrere Zwischenklassen (Agenten) gibt)

    2 Der Client und das Zielobjekt verursachen eine Verlangsamung der Verarbeitungsgeschwindigkeit

    3. Klassifizierung des Proxy-Modus

    #🎜 🎜#Der Proxy-Modus ist unterteilt in

    Statischer Proxy (dieser Artikel)

    und

    Dynamischer Proxy (nächster Artikel)

    :

    statisch: # 🎜🎜# Der Programmierer erstellt die Proxy-Klasse oder ein bestimmtes Tool generiert automatisch den Quellcode und kompiliert ihn dann. Die .class-Datei der Proxy-Klasse existiert bereits, bevor das Programm ausgeführt wird.

    #🎜🎜 #

    Dynamisch:

    Wird dynamisch mithilfe des Reflexionsmechanismus erstellt, wenn das Programm ausgeführt wird

    # 🎜🎜#4. Die Struktur des statischen Proxy-Modus

    1. Abstrakte Themenklasse: Deklarieren Sie die von realen Themen und Proxy-Objekten implementierten Geschäftsmethoden über Schnittstellen oder abstrakte Klassen

      2. Reale Themenklasse:
    • Realisiert das spezifische Geschäft im abstrakten Thema, das das reale Objekt ist, das durch das Proxy-Objekt dargestellt wird, und das endgültige Objekt, auf das verwiesen wird #🎜 🎜#

      3. Proxy-Klasse: Bietet die gleiche Schnittstelle wie das reale Theme, die einen Verweis auf das reale Theme enthält. Sie kann auf die Funktionen des realen Themes zugreifen, diese steuern oder erweitern

    • Codedemonstration:

      #🎜 🎜#Definieren Sie ein abstraktes Thema:

    Bei Verwendung Als statischer Proxy müssen Sie eine Schnittstelle oder übergeordnete Klasse definieren, und das Proxy-Objekt und das Proxy-Objekt implementieren dieselbe Schnittstelle oder erben dieselbe übergeordnete Klasse

    /**
     *抽象主题
     */
    
    public interface Subject {
        void Request();
    }

    Echtes Thema: #🎜 🎜#

    /**
     *真实主题类:实现抽象主题
     */
    public class RealSubject implements Subject{
        @Override
        public void Request() {
            System.out.println("您的航班正在飞行");
        }
    }

    Proxy-Klasse:

    #🎜 🎜#

    //代理类,实现抽象类的接口
    public class Proxy implements Subject{
    
        private RealSubject realSubject;
    
        @Override
        public void Request() {
            //先判断是否存在真实主题RealSubject
            //如果没有,就新建一个
            if(realSubject == null){
                realSubject = new RealSubject();
            }
    
            //预处理,使用这个方法
            preRequest();
    
            //去访问真实主题类的方法
            realSubject.Request();
    
            //代理类的后续方法
            postRequest();
        }
    
        private void preRequest() {
            System.out.println("航班马上起飞啦");
        }
    
        private void postRequest() {
            System.out.println("航班到达目的地,感谢乘坐");
        }
    
    
    }
    Testklasse:

    public class Test {
        public static void main(String[] args) {
    
            //使用代理去访问RealSubject里面的Request
            Proxy proxy = new Proxy();
            proxy.Request();
        }
    }
    # 🎜🎜 #Ausgabeergebnis:

    Der Flug startet gleich Ihr Flug fliegt

    Der Flug ist am Ziel angekommen , vielen Dank, dass Sie den Flug genommen haben

    Durch die obige Demonstration wird eine Proxy-Klasse verwendet, um auf die reale Welt zuzugreifen. Die Methode der Themenklasse, sodass die Testklasse nicht weiß, wer greift darauf zu, unabhängig davon, ob es sich um die Proxy-Klasse handelt oder ob andere Personen hinter der Proxy-Klasse stehen, sodass das Objekt gut geschützt werden kann. Darin liegt auch der Vorteil des Agenturmodells.

    Zusammenfassung des statischen Proxys:

    Sie können die Funktion des Ziels erweitern, ohne die Funktion des Zielobjekts, sondern des Proxy-Objekts zu ändern benötigt Es implementiert die gleiche Schnittstelle wie das Zielobjekt, daher gibt es viele Proxy-Klassen, und die Wartungskomplexität wird größer. Dann müssen Sie einen dynamischen Proxy verwenden.

    5. Anwendungsszenarien des Proxy-ModusWenn Sie ein Objekt nicht direkt referenzieren können oder wollen oder es Schwierigkeiten beim Zugriff auf ein Objekt gibt, können Sie indirekt über darauf zugreifen ein Proxy-Objekt. Es gibt zwei Hauptzwecke bei der Verwendung des Proxy-Modus:

    Einer besteht darin, das Zielobjekt zu schützen, und der andere darin, das Zielobjekt zu verbessern

    Die Zusammenfassung Auf dieses Anwendungsszenario wird aus dem Internet verwiesen: #🎜 🎜#

    Remote-Proxy. Diese Methode wird normalerweise verwendet, um die Tatsache zu verbergen, dass das Zielobjekt an einer anderen Adresse existiert Räume, um den Kundenzugang zu erleichtern. Wenn ein Benutzer beispielsweise Netzwerkspeicherplatz beantragt, wird im Dateisystem des Benutzers eine virtuelle Festplatte erstellt. Wenn der Benutzer auf die virtuelle Festplatte zugreift, greift er tatsächlich auf den Netzwerkspeicherplatz zu 🎜#
    #🎜 🎜#Virtueller Proxy, diese Methode wird normalerweise verwendet, wenn das zu erstellende Zielobjekt sehr teuer ist. Das Herunterladen eines großen Bildes dauert beispielsweise lange, und einige Berechnungen sind kompliziert und können nicht in kurzer Zeit abgeschlossen werden. In diesem Fall können Sie zunächst das reale Objekt durch einen kleinen virtuellen Agenten ersetzen, um die Wahrnehmung des Benutzers zu beseitigen ein langsamer Server#🎜 🎜#



    Sicherheits-Proxy, diese Methode wird normalerweise verwendet, um die Zugriffsrechte verschiedener Kundentypen auf reale Objekte zu steuern

  • Intelligente Anleitung wird hauptsächlich verwendet, um dem Proxy beim Aufrufen des Zielobjekts einige zusätzliche Verarbeitungsfunktionen hinzuzufügen. Fügen Sie beispielsweise die Funktion zum Zählen der Anzahl der Referenzen auf ein reales Objekt hinzu, sodass das Objekt automatisch freigegeben werden kann, wenn es nicht referenziert wird Leistung des Systems. Beispielsweise kommt es im Ruhezustand zu einem verzögerten Laden von Attributen und zu einem verzögerten Laden von Zuordnungstabellen

  • Das obige ist der detaillierte Inhalt vonSo verstehen Sie den Proxy-Modus von Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
    Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

    In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

    Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

    In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

    Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

    In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

    Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

    In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

    Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

    Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Herunterladen der Mac-Version des Atom-Editors

    Herunterladen der Mac-Version des Atom-Editors

    Der beliebteste Open-Source-Editor

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    WebStorm-Mac-Version

    WebStorm-Mac-Version

    Nützliche JavaScript-Entwicklungstools

    VSCode Windows 64-Bit-Download

    VSCode Windows 64-Bit-Download

    Ein kostenloser und leistungsstarker IDE-Editor von Microsoft