Heim >Java >javaLernprogramm >So verstehen Sie den Proxy-Modus von Java
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.
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 Zielobjekt
2. Kann die Funktion des Zielobjekts erweitern3 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-Modus1. Abstrakte Themenklasse: Deklarieren Sie die von realen Themen und Proxy-Objekten implementierten Geschäftsmethoden über Schnittstellen oder abstrakte Klassen
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
#🎜 🎜#Definieren Sie ein abstraktes Thema:
/** *抽象主题 */ public interface Subject { void Request(); }
Echtes Thema: #🎜 🎜#/**
*真实主题类:实现抽象主题
*/
public class RealSubject implements Subject{
@Override
public void Request() {
System.out.println("您的航班正在飞行");
}
}
#🎜 🎜#
//代理类,实现抽象类的接口 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 habenDurch 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 verbessernDie 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 steuernIntelligente 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!