Java Reference
In-Depth Information
4.8.3.4 Programmbeispiel
Das Proxy-Muster soll an einem Beispiel zum Zugriff auf eine Datei vorgestellt werden.
Das Interface
IDateiZugriff
definiert zwei Methoden
getName()
und
get-
Inhalt()
zur Ausgabe des Dateinamens und des Inhalts der Datei. Um das Pro-
gramm möglichst einfach zu halten, beschränkt sich der Dateizugriff auf eine simulierte
Leseoperation. Hier das Interface
IDateiZugriff
:
// Datei: IDateiZugriff.java
public interface IDateiZugriff
{
public String getName();
public String getInhalt();
}
Die echte Klasse
DateiZugriff
implementiert dieses
Interface, wobei die Leseope-
ration
getInhalt()
der Einfachheit halber in diesem Programm nur simuliert wird.
Hier die Klasse
DateiZugriff
:
// Datei: DateiZugriff.java
public class DateiZugriff implements IDateiZugriff
{
String name;
public DateiZugriff (String name)
{
this.name = name;
System.out.println ("Echtes Objekt instanziiert.");
}
public String getName()
{
return this.name;
}
public String getInhalt()
{
//Simulation einer Datei-Leseoperation
return ("Daten von " + name);
}
}
Ein Proxy speichert den Namen seiner zugehörigen Datei. Solange ein Client nur die
Methode
getName()
aufruft, ist es nicht nötig, die Datei zu öffnen und den Inhalt zu
laden. Erst wenn ein Client über
getInhalt()
den Inhalt der Datei lesen will, muss
die relativ teure Operation über den Zugriff auf das echte Objekt ausgeführt werden.
Dazu wird in diesem Fall das Originalobjekt erzeugt, das neben dem Namen auch den
Inhalt kennt. Die Proxy-Klasse
ProxyDateiZugriff
sieht dann wie folgt aus:
// Datei: ProxyDateiZugriff.java
public class ProxyDateiZugriff implements IDateiZugriff
{
String name;
IDateiZugriff realeDatei;
Search WWH ::
Custom Search