18
Seminar Entwurfsmuster Seminar Entwurfsmuster Chain of Responsibility Chain of Responsibility Zuständigkeitskette Zuständigkeitskette SS 2003 SS 2003 Stand Stand 18.06.2003 18.06.2003 Referent: Daniel Referent: Daniel Webelsiep Webelsiep Korreferenten Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang Henrich Prof. Dr. Wolfgang Henrich

Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Embed Size (px)

Citation preview

Page 1: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Seminar EntwurfsmusterSeminar Entwurfsmuster

Chain of ResponsibilityChain of Responsibility

ZuständigkeitsketteZuständigkeitskette

SS 2003SS 2003

Stand 18.06.2003Stand 18.06.2003

Referent: Daniel WebelsiepReferent: Daniel Webelsiep

KorreferentenKorreferenten

Prof. Dr. Burkhardt RenzProf. Dr. Burkhardt RenzProf. Dr. Wolfgang HenrichProf. Dr. Wolfgang Henrich

Page 2: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

InhaltInhalt

Seite 2 Seminar - Entwurfsmuster Daniel Webelsiep

Chain of Responsibility an einem Beispiel

Allgemeine Definition

Adhoc-Programmierung

Vertiefung der Zuständigkeitskette

• Nachrichtenkodierung

• Verschiedene Strukturen

• Implementierungsvarianten

Konsequenzen

Praxisbeispiele und Fazit

Page 3: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Chain of ResponsibilityChain of Responsibility

Seite 3 Seminar - Entwurfsmuster Daniel Webelsiep

zu deutsch: Zuständigkeitskette

Entwurfsmuster

• Strukturmuster

• Erzeugungsmuster

• Verhaltensmuster

Die Zuständigkeitskette gehört zur Gruppe der Verhaltensmuster

Ist ein objektbasiertes Muster

Page 4: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Ein kurzes Beispiel (1)Ein kurzes Beispiel (1)

Seite 4 Seminar - Entwurfsmuster Daniel Webelsiep

Beispiel eines kleinen Unternehmens

Bearbeitung der Anfragen von Kunden

Realisierung via Zuständigkeitskette

Page 5: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Ein kurzes Beispiel (2)Ein kurzes Beispiel (2)

Seite 5 Seminar - Entwurfsmuster Daniel Webelsiep

Anfragen werden je nach Wichtigkeit von der einzelnen Person bearbeitet oder weitergeleitet

Sehr wichtige Anfragen können nur vom Vorstand bearbeitet werden

Page 6: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

DefinitionenDefinitionen

Seite 6 Seminar - Entwurfsmuster Daniel Webelsiep

"Vermeide die Kopplung des Auslösers einer Anfrage mit seinem Empfänger, indem mehr als ein Objekt die Möglichkeit erhält, die Aufgabe zu erledigen. Verkette die empfangenden Objekte und leite die Anfrage an einer Kette entlang, bis ein Objekt sie erledigt."

"Führe eine Kette in einem System ein, damit Nachrichten entweder dort behandelt werden, wo sie empfangen wurden oder an ein Objekt weiterleitet werden, welches die Nachricht bearbeiten kann."

(Quelle: GoF)

(Quelle: Applied Java Patterns)

Page 7: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Allgemeine StrukturAllgemeine Struktur

Seite 7 Seminar - Entwurfsmuster Daniel Webelsiep

Jeder Handler hat eine Bearbeitungsmethode und eine Verbindung zu seinem Nachfolger

Handler als abstrakte Klasse

Wegen fehlender Mehrfachverer-bung in C# kann ein Interface benutzt werden

Link zum Nachfolger dann als Methode

Page 8: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Layoutänderung - AdhocLayoutänderung - Adhoc

Seite 8 Seminar - Entwurfsmuster Daniel Webelsiep

Feste Kopplung zwischen Sender und Empfänger einer Nachricht

Keine Flexibilität zur Laufzeit

Bei größeren Systemen unübersichtliche Verbindungen zwischen den Objekten

Änderungen im Verhalten wirken sich auf viele Stellen im Quellcode aus

Wartbarkeit und Wiederverwendung sind nicht gegeben

QuelltextQuelltext

Page 9: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Der Einsatz der CoRDer Einsatz der CoR

Seite 9 Seminar - Entwurfsmuster Daniel Webelsiep

Einführung des Interfaces LayoutHandler mit definierter Bearbeitungsmethode, C# - Mehrfachvererbung

Alle Klassen der Kette müssen das Interface implementieren

Page 10: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

CoR zur LaufzeitCoR zur Laufzeit

Seite 10 Seminar - Entwurfsmuster Daniel Webelsiep

Bearbeitung findet als Kette statt

Lose Kopplung zwischen Sender und Empfänger

Verhalten wird zur Laufzeit bestimmt

QuelltextQuelltext

Page 11: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

NachrichtenkodierungNachrichtenkodierung

Seite 11 Seminar - Entwurfsmuster Daniel Webelsiep

Verschiedene Implementierung der Aufgaben

Definierte Bearbeitungsmethoden, für jede Aufgabe eine andere Methode=> Unflexibel bei Änderungen

Eine Methode mit Übergabeparameter, z.B. string

Besser – Anfrageobjekte

Definieren verschiedene Aufgabentypen

Kodieren eine Nachricht

Page 12: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Verschiedene Strukturen (1)Verschiedene Strukturen (1)

Seite 12 Seminar - Entwurfsmuster Daniel Webelsiep

Zuständigkeitskette als Baum

Benutzt die gegebene Struktur des GUIs

Beispielimplemen-tiert dieBaum-strukturteilweise

Page 13: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Verschiedene Strukturen (2)Verschiedene Strukturen (2)

Seite 13 Seminar - Entwurfsmuster Daniel Webelsiep

Alternative Implementierung als lineare Kette oder Ring

Lineare Kette bietet größere Flexibilität, ist aber schwerer zu warten oder zu testen

Als Ring muss die Behandlung des Abbruchs stärker bedacht werden

Abwägen, welche Struktur man verwendet

Page 14: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Implementierungs-VariantenImplementierungs-Varianten

Seite 14 Seminar - Entwurfsmuster Daniel Webelsiep

Besondere Strategien zur Nachrichtenbehandlung

Bearbeite direkt – Ist eine Nachricht nicht zur Weiter-leitung spezifiziert, bearbeite sie

Leite weiter – Bearbeite eine Nachricht nur, wenn sie entsprechend gekennzeichnet ist

Sende an den Standard-Bearbeiter – Jede Nachricht, die nicht bearbeitet werden kann, wird an einen Standard-Bearbeiter weitergeleitet

Ignoriere im Normalfall – Ist eine Nachricht weder zur Bearbeitung noch zur Weiterleitung gekennzeichnet, beende die Kette

Page 15: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

KonsequenzenKonsequenzen

Seite 15 Seminar - Entwurfsmuster Daniel Webelsiep

Reduzierte Kopplung – Einfachere Objektstruktur, weil das Objekt den Bearbeiter nicht kennt. Die Struktur der Kette ist für die Objekte nicht relevant.

Höhere Flexibilität – Zuständigkeiten können zur Laufzeit einfach geändert werden, indem Objekte gelöscht oder der Kette hinzugefügt werden.

Keine Abarbeitungsgarantie – Da die Anfragen nur entlang der Kette weitergeleitet werden, kann nicht garantiert werden, dass eine Bearbeitung stattfindet.

Besser wiederverwendbar und wartbar

Schwieriger zu entwickeln und zu testen

Page 16: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

PraxisbeispielePraxisbeispiele

Seite 16 Seminar - Entwurfsmuster Daniel Webelsiep

Wird am meisten bei der Nachrichtenbehandlung (Event-Handling) verwendet

Im ET++ Framework für C++ nutzt die IDE die Zuständigkeitskette, um das GUI zu aktualisieren

In Java werden viele Event-Handler als Kette eingesetzt, um eine Reihe von Objekten den Event bearbeiten zu lassen

Die Nachrichtenschleifen in Windows verhält sich ebenfalls wie eine Zuständigkeitskette, wenn auch ohne Objektstruktur

Anwendung recht selten

Page 17: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

FazitFazit

Seite 17 Seminar - Entwurfsmuster Daniel Webelsiep

Entwurfsmuster sind erprobte Lösungen für wiederkehrende Softwareprobleme

Effizienter und sicherer "gute" Software schreiben

Handwerkszeug für jeden Softwareentwickler

Chain of Responsibility verbessert Flexibilität, Erweiterbarkeit und Wiederverwendung von Software

Entwicklung und Testen der Software wird schwieriger

Nach Untersuchungen des Fraunhofer Instituts keine Performanceeinbußen durch die Zuständigkeitskette

Page 18: Seminar Entwurfsmuster Chain of Responsibility Zuständigkeitskette SS 2003 Stand 18.06.2003 Referent: Daniel Webelsiep Korreferenten Prof. Dr. Burkhardt

Fragen?Fragen?

Seite 18 Seminar - Entwurfsmuster Daniel Webelsiep

Danke für die Aufmerksamkeit!Danke für die Aufmerksamkeit!