Latest web development tutorials

Proxy-Modus

Im Proxy-Modus (Proxy Pattern), eine Klasse von Funktionen im Namen einer anderen Klasse. Diese Art von Entwurfsmustern gehören Strukturmodell.

Im Proxy-Modus, erstellen wir ein Objekt mit einem bestehenden Objekt, um eine funktionale Schnittstelle zur Außenwelt zu schaffen.

Einführung

Absicht: einen Agenten zur Steuerung des Zugriffs auf dieses Objekt mit anderen Objekten zu liefern.

Haupt Auflösung: direkter Zugang zum Objekt verursacht Probleme, wie zum Beispiel: das Objekt , das Sie auf dem entfernten Rechner zugreifen möchten.In der objektorientierten Systemen, aus irgendeinem Grund einige Objekte (wie zB Objekterstellung ist teuer, oder bestimmte Aktionen erfordern Sicherheitskontrollen oder den Zugriff außerhalb des Prozesses), wird es den Benutzern direkten Zugriff auf die Systemkonfiguration oder eine Menge Ärger geben, wir können zum Zeitpunkt der Zugriff auf dieses Objekt eine Ebene für den Zugriff auf dieses Objekt hinzuzufügen.

Wann verwendet man :wenn Sie etwas , um den Zugriff auf eine Klasse machen wollen.

Wie zu beheben: add Zwischenschicht.

Der Schlüsselcode: Verknüpfung mit den Proxy - Klasse - Kombinationen.

Anwendungsbeispiele: 1, Verknüpfungen von Windows nach innen.2, das Schwein zu hoch Cuilan Ergebnis Affe Veränderung ging, verstanden werden kann: Die hohe Cuilan Aussehen abstrahiert, hohe Türkis-Blau I und Affe implementiert diese Schnittstelle, Schwein Zugriff hohe Cuilan, wenn sie nicht den Affenkönig zu sehen, so dass der Monkey King eine hohe Cuilan ist Proxy-Klasse. 3, die nicht unbedingt Fahrkarten am Bahnhof zu kaufen, um zu kaufen, können Sie auch zu den Auslässen gehen kann. 4, ein Scheck oder eine Bankbescheinigung über die Hinterlegung ist ein Proxy-Konto Fonds. Überprüfen Sie Transaktionen auf dem Markt ist, anstelle von Bargeld verwendet wird, und stellt die Kapitalkontensteuerung des Emittenten. 5, Frühling AOP.

Vorteile: 1, klare Verantwortlichkeiten.2, hohe Skalierbarkeit. 3, intelligent.

Nachteile: 1, wie es zwischen dem Client und dem eigentlichen Thema , dass der Proxy - Objekt, so eine Art Proxy - Modus kann in langsamer Verarbeitungsgeschwindigkeit Anfrage zur Folge haben .2, Proxy-Modus erfordert zusätzliche Arbeit zu erreichen einige Proxy-Modus zu erreichen, ist sehr komplex.

Einsatzszenarien: nach Verantwortlichkeiten zu teilen, haben in der Regel die folgenden Nutzungsszenarien: 1, Remote Agent.2. Warnungen. 3, Copy-on-Write-Agenten. 4, der Schutz (Protect oder Access) Mittel. 5, Cache-Agenten. 6, Firewall (Firewall) Agent. 7, Synchronisation (Synchronisation) Agent. 8, intelligent Referenzen (Smart Reference) Agent.

Hinweis: Der Unterschied zwischen 1 und Adapter - Modi: Adapter - Muster große Veränderungen Objektschnittstelle in Betracht gezogen, und Proxy - Modus nicht von Agenten der Klassenschnittstelle verändert werden kann.Der Unterschied zwischen 2 und Dekorateur Muster: Decorator Zur Verbesserung der Funktionalität und Proxy-Modus gesteuert werden soll.

Realisierung

Wir werden eineBildSchnittstelle und Implementierung der EntitätsklassenBildSchnittstelle erstellen.ProxyImageist ein Proxy - Klasse, SpeicherbedarfRealImagegeladen Objekte zu reduzieren.

ProxyPatternDemo,zeigen wir die Verwendung vonProxyImageKlasseein Image- Objekt zu erhalten , bei Bedarf geladen und angezeigt werden.

Proxy-Muster UML-Diagramm

Schritt 1

Erstellen Sie eine Schnittstelle.

Image.java

öffentliche Schnittstelle Bild {
   Leeranzeige ();
}

Schritt 2

Erstellen von Entity-Klasse, die die Schnittstelle implementiert.

RealImage.java

public class RealImage implementiert Bild {

   private String filename;

   public RealImage (String filename) {
      this.fileName = filename;
      loadFromDisk (filename);
   }

   @Override
   public void display () {
      System.out.println ( "Anzeige" + filename);
   }

   private void loadFromDisk (String filename) {
      System.out.println ( "Laden" + filename);
   }
}

ProxyImage.java

public class ProxyImage implementiert Bild {

   Privat RealImage realImage;
   private String filename;

   public ProxyImage (String filename) {
      this.fileName = filename;
   }

   @Override
   public void display () {
      if (realImage == null) {
         realImage = new RealImage (filename);
      }
      realImage.display ();
   }
}

Schritt 3

Wenn gewünscht, verwendenProxyImageRealImage Klasse - Objekt zu erhalten.

ProxyPatternDemo.java

public class ProxyPatternDemo {
	
   public static void main (String [] args) {
      Bild image = neue ProxyImage ( "test_10mb.jpg");

      // Laden Sie das Bild von der Festplatte image.display (); 
      System.out.println ( "");
      // Die Bilder können nicht von der Festplatte image.display () geladen werden; 	
   }
}

Schritt 4

Stellen Sie sicher, ausgegeben.

Loading test_10mb.jpg
Anzeige test_10mb.jpg

Anzeige test_10mb.jpg