Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Entwurfsmuster (Design Pattern) ETIS SS05. ETIS SS05 Nadine FröhlichPattern 2 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung.

Ähnliche Präsentationen


Präsentation zum Thema: "Entwurfsmuster (Design Pattern) ETIS SS05. ETIS SS05 Nadine FröhlichPattern 2 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung."—  Präsentation transkript:

1 Entwurfsmuster (Design Pattern) ETIS SS05

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

3 ETIS SS05 Nadine FröhlichPattern 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?

4 ETIS SS05 Nadine FröhlichPattern 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

5 ETIS SS05 Nadine FröhlichPattern 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)

6 ETIS SS05 Nadine FröhlichPattern 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

7 ETIS SS05 Nadine FröhlichPattern 7 Pattern III Kombinierbar –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

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

9 ETIS SS05 Nadine FröhlichPattern 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: Mögliche BildProxies Eigentliches Bild

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

11 ETIS SS05 Nadine FröhlichPattern 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

12 ETIS SS05 Nadine FröhlichPattern 12 Proxy-Pattern - Struktur ClientSubjekt operation() … Proxy operation() … EchtesSubjekt operation() … echtesSubjekt.operation(); … echtesSubjekt

13 ETIS SS05 Nadine FröhlichPattern 13 Proxy-Pattern - Teilnehmer Proxy –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

14 ETIS SS05 Nadine FröhlichPattern 14 Proxy-Pattern – Interaktionen + Konsequenzen Interaktionen –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

15 ETIS SS05 Nadine FröhlichPattern 15 Proxy-Pattern - Implementierung 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(); } public interface Subject { public void berechne(); }

16 ETIS SS05 Nadine FröhlichPattern 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)

17 ETIS SS05 Nadine FröhlichPattern 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

18 ETIS SS05 Nadine FröhlichPattern 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


Herunterladen ppt "Entwurfsmuster (Design Pattern) ETIS SS05. ETIS SS05 Nadine FröhlichPattern 2 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung."

Ähnliche Präsentationen


Google-Anzeigen