Download - 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 [email protected]
2
Abgrenzung
3
Absicht Stellvertreter für ein anderes Objekt bietet Kontrolle über Objekt- Erzeugung und –Zugriff
Motivation kostspielige Objekt- Erzeugung verzögern (zB: große Bilder) Remote Objekt Sicherheitsfunktion Cache
Idee Bild- Stellvertreter (Proxy) verwenden Bild- Stellvertreter verhält sich aus Client- Sicht wie Bild Bild- Stellvertreter erzeugt Bild bei Bedarf
4
Proxy Pattern - Schema
5
+start()+stop()+forward()+reverse()+getName() : String
«Schnittstelle»IVehicle
+start()+stop()+forward()+reverse()+getName() : String
-IVehicle v
VehicleProxy
+start()+stop()+forward()
+main
Client
+start()+stop()+forward()+reverse()+getName() : String
-name : String
Car
Konkretes Beispiel
6
public interface IVehicle {
public void start();
public void stop();
public void forward();
public void reverse();
public String getName();
}
7
public class Car implements IVehicle {
private String name;
public Car(String name) {this.name=name;}
public void start() {
System.out.println("Car " + name + " started");
}
public void stop() {…}
public void forward() {…}
public void reverse() {…}
public String getName() {…}
}
8
public class VehicleProxy implements IVehicle {
private IVehicle v;public VehicleProxy(IVehicle v) {this.v=v;}
public void start() {System.out.println("VehicleProxy: Begin of start()");v.start();System.out.println("VehicleProxy: End of start()");}
public void stop() {…}public void forward() {…}public void reverse() {…}public String getName() {…}}
9
public class Client {
public static void main(String[] args) {new Client();}
public Client() {IVehicle c = new Car("Audi A7");IVehicle v = new VehicleProxy(c);v.start();v.forward();v.stop();}
}
10
Fall- Beispiel
Protection Proxy (Zugriffskontrolle)
Remote
Zugriff
Ressourcen
11
Lösung
Kommunikation über den Proxy
lokalisiert entferntes Objekt und „kommuniziert“ mit ihm
Authentifikationsprüfung unötige Zugriffe werden verhindert
zufrieden stellendes Ergebnis
12
Konsequenzen
Der Remote-Proxy
Der Schutz-Proxy übernimmt zusätzliche Sicherheitsfunktionen
Der Cache-Proxy speichert dieo Daten einer Komponente zwischen
13
Implementation (technisch)
1. Verantwortlichkeiten dem Stellvertreter zuweisen
2. Abstrakte Basisklasse einführen
3. Funktionen des Stellvertreters implementieren
4. Original und Client von Verantwortlichkeit lösen
5. Original und Proxy verbinden
6. Client vom Original lösen
14
Weitere Proxy Varianten
1. Virtueller Proxy
2. Schutz- Proxy
3. Synchronisierungs- Proxy
4. Remote- Proxy
5. Firewall- Proxy
6. Counting- Proxy
7. Cache- Proxy
15
Vielen Dank