Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Entwurfsmuster (Design Pattern)

Ähnliche Präsentationen


Präsentation zum Thema: "Entwurfsmuster (Design Pattern)"—  Präsentation transkript:

1 Entwurfsmuster (Design Pattern)
ETIS SS05

2 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung
ETIS SS05 Nadine Fröhlich

3 Motivation I Wie gut sind eure Programme strukturiert?
Wartbarkeit? - Verständlichkeit (für euch, für andere, bei wachsender Komplexität)? Wiederverwendbarkeit? Effizienz? Dauert es lange, gute Lösungen zu finden? Greift ihr auf gute Lösungen immer wieder zurück? Wie merkt ihr euch gute Lösungen? Könntet ihr eure Lösung problemlos weitergeben? Wäre es gut, Erfahrungen von Experten nutzen zu können? Pattern ETIS SS05 Nadine Fröhlich

4 Motivation II Wie sind Probleme (Lesbarkeit, Wiederverwendbarkeit, Wartbarkeit) lösbar? Geeigneter Entwurf Pattern halten erfolgreiche Lösungen (von Experten) fest Vermitteln bewährte Entwürfe (d.h. Entwurfs- und nicht Implementierungswiederverwendung) Keine trivialen Probleme Vermeiden „das Rad neu zu erfinden“ Auswirkungen Einfache, leichter verständliche Entwürfe + Dokumentation Schnelle, kostengünstige Software-Entwicklung Bessere Verständigung im Softwareentwicklungsprozess Pattern ETIS SS05 Nadine Fröhlich

5 Pattern I Was sind Pattern? (Ch. Alexander)
Beschreibung im Entwurfskontext häufig auftretenden Problems Erläuterung des Kerns der Lösung dieses Problems Lösung beliebig oft anwendbar, aber i.d.R. nicht 2x gleich Grundlegende Elemente (Gamma et al.) Mustername (Stichwort) Problemabschnitt (Problem, Anwendbarkeit, Kontext) Lösungsabschnitt (Entwurfelemente, Beziehungen, Interaktionen) Konsequenzabschnitt (Vor- und Nachteile) Pattern ETIS SS05 Nadine Fröhlich

6 Pattern II Verschiedenste Anwendungsbereiche
z.B. Architektur, Pädagogik, Informatik (verteilte Systeme, UIs) Unterschiedlichen Abstraktionsebenen Architekturmuster Softwaresysteme durch Subsysteme strukturiert z.B. MVC, Broker, Layers Entwurfsmuster Verfeinerung Subsysteme oder deren Beziehungen z.B. Proxy, abstrakte Fabrik, Kompositium Idiome Aspekte des Entwurfs in bestimmter Programmiersprache z.B. Singleton in C++, Smalltalk Pattern ETIS SS05 Nadine Fröhlich

7 Pattern III Kombinierbar in Katalogen abgelegt
Konkrete Fabrik oft als Singleton implementiert Broker-Pattern benutzt Proxys + Bridge in Katalogen abgelegt Sammlung von Mustern (oft zu einem Thema) in strukturiertem, im Katalog einheitlichen, Format beschrieben Stellt auch Vernetzungen, Verwandtschaften der Pattern untereinander dar Pattern ETIS SS05 Nadine Fröhlich

8 Proxy-Pattern I Klassifizierung Name: Zweck: Auch bekannt als
Objektorientiertes Strukturmuster Name: Proxy Zweck: Kontrolle des Zugriffs auf ein Objekt mittels vorgelagerten Stellvertreterobjektes Auch bekannt als Surrogat Pattern ETIS SS05 Nadine Fröhlich

9 Proxy-Pattern - Motivation I
Volle Kosten der Objekt-Erzeugung + Objekt-Initialisierung verzögern, bis Objekt tatsächlich genutzt z.B. BildProxy Laden von Bildern in Dokumenten teuer Proxy als Platzhalter für Bild verwenden Bild-Objekte erst auf Verlangen erzeugt Beispiel: Eigentliches Bild Mögliche BildProxies Pattern ETIS SS05 Nadine Fröhlich

10 Proxy-Pattern - Motivation II
DokumentEditor Grafik zeichne() gibAusmasse() lade() if (bild == null){ bild = lade(); } bild.zeichne(); Bild BildProxy bildImp ausmasse zeichne() gibAusmasse() lade() dateiname ausmasse zeichne() gibAusmasse() lade() if (bild == null){ return ausmasse; } else { return bild.gibAusmasse(); } bild Pattern ETIS SS05 Nadine Fröhlich

11 Proxy-Pattern - Anwendbarkeit
Remote-Proxy Lokaler Stellvertreter für Objekt in anderem Adressraum z.B. RMI, Corba, … Virtuelles Proxy Teure Objekte auf Verlangen erzeugt z.B. Bildproxy Schutzproxy Zugriffskontrolle auf Originalobjekte z.B. KernelProxy Smart-Reference Ersatz für einfachen Zeiger, der zusätzliche Aktionen ausführt z.B. Test vor Zugriff auf Objekt, ob gelockt Pattern ETIS SS05 Nadine Fröhlich

12 Proxy-Pattern - Struktur
Client Subjekt operation() EchtesSubjekt Proxy echtesSubjekt.operation(); operation() echtesSubjekt operation() Pattern ETIS SS05 Nadine Fröhlich

13 Proxy-Pattern - Teilnehmer
Referenz auf EchtesSubjekt, d.h. hat Zugriff darauf Bietet identische Schnittstelle zu Subjekt, d.h. einsetzbar für EchtesSubjekt Kontrolliert Zugriff auf EchtesSubjekt Spezifische Zuständigkeiten (abhängig von der Art) Remote-Proxies: Anfragen, Argumente kodieren + an EchtesSubjekt in anderem Adressraum senden Virtuelle Proxies: Zugriff verzögern durch Zwischenspeichern zusätzlicher Informationen über EchtesSubjekt Schutzproxies: Test, ob Aufrufer notwendige Zugriffsrechte besitzt Subjekt gemeinsame Schnittstelle für EchtesSubjekt und Proxy, d.h. Proxy dort nutzbar, wo EchtesSubjekt erwartet EchtesSubjekt eigentliches, durch Proxy repräsentiertes, Objekt Pattern ETIS SS05 Nadine Fröhlich

14 Proxy-Pattern – Interaktionen + Konsequenzen
Wenn angebracht, leitet Proxy Befehle an EchtesSubjekt weiter Konsequenzen Führt Ebene der Indirektion bei Objektzugriff ein Remote-Proxy versteckt Tatsache, dass Objekt in anderem Adressraum Virtuelles Proxy kann Optimierungen ausführen z.B. Objekterzeugung auf Verlangen Schutzproxies + Smart-References ermöglichen Durchführung zusätzlicher Verwaltungsaufgaben bei Objektzugriff Pattern ETIS SS05 Nadine Fröhlich

15 Proxy-Pattern - Implementierung
public interface Subject { public void berechne(); } public class EchtesSubject extends Subject { public void berechne() { //schwierige lange dauernde //Berechnung } public class Proxy implements Subject { private EchtesSubject esub; protected void lade() { if (esub == null) esub = new EchtesSubject(); } public void berechne() { lade(); esub.berechne(); Pattern ETIS SS05 Nadine Fröhlich

16 Proxy-Pattern – Verwendung + Verwandte Muster
Bekannte Verwendungen RMI, Corba, … Kernelproxies Verwandte Muster Adapter Adapter bietet andere Schnittstelle zum Objekt, das es anpasst Proxy bietet selbe Schnittstelle wie Subjekt Dekorierer Können ähnliche Implementierung wie Proxies haben Verfolgen anderen Zweck (Dekorierer erweitert Objekt um Zuständigkeiten, Proxy kontrolliert Zugriff auf Objekt) Pattern ETIS SS05 Nadine Fröhlich

17 Zusammenfassung Entwurfsmuster erfassen Erfahrungswissen, d.h. bewährte Lösungen, in strukturierter, leicht verständlicher Form Vermeiden „das Rad wieder zu erfinden“ Verbessern Wartung, Wiederverwendung, Verständlichkeit von Software Ermöglichen relativ einfaches Weitergeben von Erfahrungswissen Stellen einheitliches Vokabular dar Unterliegen ständigen Verbesserungen Probleme: Trotz allem: Lernaufwand relativ hoch Bei Wahl eines guten Pattern in falschem Kontext: Verschlechterung des Entwurfes Pattern ETIS SS05 Nadine Fröhlich

18 Literatur Gamma, E., Helm, R., Jonson, R., Vlissides, J., Entwurfsmuster, Addison-Wesley, Bonn, 1996 Buschmann, F., Meunier, R., Pattern orientierte Software Architektur, Addison-Wesley, Bonn, 1998 Pattern ETIS SS05 Nadine Fröhlich


Herunterladen ppt "Entwurfsmuster (Design Pattern)"

Ähnliche Präsentationen


Google-Anzeigen