Java Reference
In-Depth Information
System.out.println("<--- return: " + result);
return result;
}
public class Main
{
private static void useCounter(Counter counter)
{
//wie zuvor:
...
}
public static void main(String[] args)
{
CounterImpl counterImpl = new CounterImpl();
StaticProxy staticProxy =
new StaticProxy(counterImpl);
useCounter(staticProxy);
}
}
Der statische Proxy wird durch die Klasse StaticProxy verkörpert. Da diese Klasse die
Schnittstelle Counter implementiert, ist sie sozusagen ein Server. Gleichzeitig benutzt sie
die Counter-Schnittstelle und spielt somit die Rolle eines Clients. Wie bei useCounter ist es
von Vorteil, wenn wir auch in StaticProxy wieder mit dem Schnittstellentyp Counter und
nicht der Klasse CounterImpl arbeiten. Dadurch erhalten wir die Möglichkeit, mehrere Pro-
xies zwischen den Client und Server zu setzen. Nehmen Sie dazu an, dass es weitere Klas-
sen StaticProxy2 und StaticProxy3 gibt, die eine Protokollierung der Methodenaufrufe in
eine Datei bzw. in eine Datenbank realisieren. Man könnte die Funktionalität aller drei
Proxies dann kombinieren, wobei in diesem Fall die Reihenfolge der Proxies beliebig ist, da
sie nicht voneinander abhängig sind. Wir nehmen für den folgenden Programmcode an,
dass die Klasse StaticProxy in StaticProxy1 umbenannt wurde. Das Hintereinanderschalten
mehrerer Proxies könnte dann so realisiert werden:
public class Main
{
private static void useCounter(Counter counter)
{
//wie zuvor:
...
}
public static void main(String[] args)
{
CounterImpl counterImpl = new CounterImpl();
StaticProxy staticProxy1 =
new StaticProxy1(counterImpl);
StaticProxy2 staticProxy2 =
new StaticProxy2(staticProxy1);
StaticProxy3 staticProxy3 =
new StaticProxy3(staticProxy2);
useCounter(staticProxy3);
}
}
 
Search WWH ::




Custom Search