Proxymuster

In der Computerprogrammierung ist das Proxymuster ein Softwaredesignmuster.

Eine Vertretung, in seiner allgemeinsten Form, ist eine Klasse, die als eine Schnittstelle zu etwas anderem fungiert. Die Vertretung konnte zu irgendetwas verbinden: Eine Netzverbindung, ein großer Gegenstand im Gedächtnis, einer Datei oder einer anderen Quelle, die teuer oder unmöglich ist zu kopieren.

Ein wohl bekanntes Beispiel des Proxymusters ist eine Verweisung, Zeigestock-Gegenstand aufzählend.

In Situationen, wo vielfache Kopien eines komplizierten Gegenstands bestehen müssen, kann das Proxymuster angepasst werden, um das Fliegengewicht-Muster zu vereinigen, um den Speicherfußabdruck der Anwendung zu reduzieren. Gewöhnlich wird ein Beispiel des komplizierten Gegenstands und der vielfachen Proxygegenstände geschaffen, von denen alle eine Verweisung auf den einzelnen ursprünglichen komplizierten Gegenstand enthalten. Irgendwelche auf den Vertretungen durchgeführten Operationen werden zum ursprünglichen Gegenstand nachgeschickt. Sobald alle Beispiele der Vertretung außer dem Spielraum sind, kann das Gedächtnis des komplizierten Gegenstands deallocated sein.

Beispiel

Das folgende javanische Beispiel illustriert das "virtuelle" Proxymuster. Die Klasse wird verwendet, um auf eine entfernte Methode zuzugreifen.

verbinden Sie Image {\

Leere displayImage ;

}\

//auf dem System ein

Klasse RealImage führt Image {\durch

privater Schnur-Dateiname;

öffentlicher RealImage (Schnur-Dateiname) {

this.filename = Dateiname;

loadImageFromDisk ;

}\

private Leere loadImageFromDisk {\

System.out.println (+ Dateiname "Ladend");

}\

öffentliche Leere displayImage {

System.out.println (+ Dateiname "Zeigend");

}\}\

//auf dem System B

Klasse ProxyImage führt Image {\durch

privater Schnur-Dateiname;

privates Image von RealImage;

öffentlicher ProxyImage (Schnur-Dateiname) {

this.filename = Dateiname;

}\

öffentliche Leere displayImage {\

wenn (Image == ungültig) {\

Image = neuer RealImage (Dateiname);

}

image.displayImage ;

}\}\

Klasse ProxyExample {\

öffentliche statische leere Hauptsache (Schnur [] args) {\

Image image1 = neuer ProxyImage ("HiRes_10MB_Photo1");

Image image2 = neuer ProxyImage ("HiRes_10MB_Photo2");

image1.displayImage ;//das Laden notwendigen

image1.displayImage ;//das Laden unnötigen

image2.displayImage ;//das Laden notwendigen

image2.displayImage ;//das Laden unnötigen

image1.displayImage ;//das Laden unnötigen }\}\</Quelle>

Die Produktion des Programms ist:

Das Laden HiRes_10MB_Photo1

Das Anzeigen HiRes_10MB_Photo1

Das Anzeigen HiRes_10MB_Photo1

Das Laden HiRes_10MB_Photo2

Das Anzeigen HiRes_10MB_Photo2

Das Anzeigen HiRes_10MB_Photo2 Das Anzeigen HiRes_10MB_Photo1

Siehe auch

Links


Raumausstatter-Muster / Befehl-Muster
Impressum & Datenschutz