-LABORPRAKTIKUMSOMMERSEMESTER 2005 „Umsetzung von Pattern“ Folie 1 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 Muster: DECORATOR Gruppe: Christian Pfeffer Carsten Walther Quelle: Gamma, E., Helm, R., Jonson, R., Vlissides, J., „Entwurfsmuster“, Addison Wesley, Bonn, 1996 1. Einordnung • 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Pattern werden in drei Patternklassen eingeordnet 1. Strukturmuster 2. Verhaltensmuster 3. Erzeugungsmuster Folie 2 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 • Decorator ist Strukturmuster • auch bekannt als Wrapper 2. Motivation 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Folie 3 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 Vererbung erweist sich in vielen Fällen als zu unflexibel. Weitaus flexibler ist es, ein einzelnes Objekt mit einer Komponente wie z.B. einem Filter zu verknüpfen. Diese Verknüpfung wird mittels eines Decorator herbeigeführt. Ein Decorator leitet die Anforderungen an eine Komponente weiter und kann zusätzliche Aktionen wie z.B. das herausfiltern von Buchstaben ausführen. 2. Motivation 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Mit dem Decorator kann man Objekte (also nicht ganze Klassen) dynamisch (zur Laufzeit) um neue Funktionalitäten erweitern und diese auch wieder entziehen. Objekte können hierbei rekursiv zusammengesetzt werden, um zusätzliche Funktionalitäten zu erlangen. Dieses soll am Beispiel eines Textfilters verdeutlicht werden. Folie 4 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 3. Beispiel • Liste von Wörtern soll zur Ausgabe gefiltert werden 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster 1. Wort muß gegebenen Buchstaben enthalten, um in die Ausgabeliste übernommen zu werden 2. Worte können aufsteigend oder absteigend sortiert werden • Filter sollen mehrmals aufrufbar sein • Reihenfolge der Filter soll veränderbar sein Folie 5 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 3. Beispiel Mögliche Implementierungen 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster 1. statischer Ansatz: Klassenhierarchien erweitern • Kombinierbarkeit bei statischem Ansatz nicht möglich • Explosion der Zahl der Klassen • mangelnde Flexibilität • nicht beliebig kombinierbar • z.B. keine Schachtelung 2. dynamischer Ansatz: Decorator Folie 6 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 • Funktionalität dynamischer und transparenter hinzufügen • Entfernung der Funktionalität wieder möglich • Praktikabler als Unterklassenbildung 4. Struktur 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Folie 7 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 4. Struktur 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Folie 8 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 5. Komponenten 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Folie 9 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 • MainFrame.java - Beispielanwendung zur Visualisierung • StringList.java - Interface zur Definition der Zugriffsmethoden • SimpleStringList.java - einfache Implementierung des StringList-Interfaces • FilteredStringList.java - Implementierung mit Filtermöglichkeit • SortedStringList.java - Implementierung mit Sortiermöglichkeit 6. Visualisierung 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Folie 10 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 7. Verwandte Muster 1. 2. 3. 4. 5. 6. 7. Einordnung Motivation Beispiel Struktur Komponenten Visualisierung Verwandte Muster Folie 11 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel 2000 • Adaptor • Composite