Java Reference
In-Depth Information
counter.add(7);
counter.sub(6);
...
}
public static void main(String[] args)
{
CounterImpl counterImpl = new CounterImpl();
useCounter(counterImpl);
}
}
Der Schnittstelle in Bild 4.1 entspricht die Schnittstelle Counter in Listing 4.1, dem Server
entspricht die Klasse CounterImpl bzw. das Objekt dieser Klasse, und dem Client entspricht
die Methode useCounter. Da wir im Folgenden einen Proxy zwischen Client und Server
schalten wollen ohne den Programmcode von Client und Server zu ändern, ist es günstig,
wenn in der Methode useCounter der Typ des Parameters die Schnittstelle Counter ist (und
nicht die implementierende Klasse CounterImpl). So können wir im nächsten Programmbei-
spiel die Methode useCounter mit einem Proxy-Objekt als Argument aufrufen, da die Proxy-
Klasse die Schnittstelle Counter ebenfalls implementieren wird.
Die Zusatzfunktion unserer manuell erstellten, statischen Proxy-Klasse soll Logging sein.
Das bedeutet, dass alle Methodenaufrufe der Schnittstelle Counter samt der von diesen
Aufrufen zurückgelieferten Werte protokolliert und auf dem Bildschirm ausgegeben wer-
den. Das Programm mit statischem Proxy fi ndet sich in Listing 4.2.
Listing 4.2 Nutzung eines Objekts über einen statischen Proxy
package javacomp.basics;
//interface Counter und class CounterImpl wie zuvor:
...
class StaticProxy implements Counter
{
private Counter counter;
public StaticProxy(Counter counter)
{
this.counter = counter;
}
public int add(int i)
{
System.out.println("---> javacomp.basics.Counter.add(" +
i + ")");
int result = counter.add(i);
System.out.println("<--- return: " + result);
return result;
}
public int sub(int i)
{
System.out.println("--->javacomp.basics.Counter.sub(" +
i + ")");
int result = counter.sub(i);
 
Search WWH ::




Custom Search