15
1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 [email protected]

1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 [email protected]

Embed Size (px)

Citation preview

Page 1: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

1

Proxy Pattern

Vorlesung Design PatternsSieglinde [email protected]

Page 2: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

2

Abgrenzung

Page 3: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

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

Page 4: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

4

Proxy Pattern - Schema

Page 5: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

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

Page 6: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

6

public interface IVehicle {

public void start();

public void stop();

public void forward();

public void reverse();

public String getName();

}

Page 7: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

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() {…}

}

Page 8: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

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() {…}}

Page 9: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

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();}

}

Page 10: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

10

Fall- Beispiel

Protection Proxy (Zugriffskontrolle)

Remote

Zugriff

Ressourcen

Page 11: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

11

Lösung

Kommunikation über den Proxy

lokalisiert entferntes Objekt und „kommuniziert“ mit ihm

Authentifikationsprüfung unötige Zugriffe werden verhindert

zufrieden stellendes Ergebnis

Page 12: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

12

Konsequenzen

Der Remote-Proxy

Der Schutz-Proxy übernimmt zusätzliche Sicherheitsfunktionen

Der Cache-Proxy speichert dieo Daten einer Komponente zwischen

Page 13: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

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

Page 14: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

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

Page 15: 1 Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich 21.04.2004 sh34@hdm-stuttgart.de

15

Vielen Dank