Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Chain of Responsibility

Ähnliche Präsentationen


Präsentation zum Thema: "Chain of Responsibility"—  Präsentation transkript:

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

2 Inhalt Chain of Responsibility an einem Beispiel Allgemeine Definition
Adhoc-Programmierung Vertiefung der Zuständigkeitskette Nachrichtenkodierung Verschiedene Strukturen Implementierungsvarianten Konsequenzen Praxisbeispiele und Fazit Seite 2 Seminar - Entwurfsmuster Daniel Webelsiep

3 Chain of Responsibility
zu deutsch: Zuständigkeitskette Entwurfsmuster Strukturmuster Erzeugungsmuster Verhaltensmuster Die Zuständigkeitskette gehört zur Gruppe der Verhaltensmuster Ist ein objektbasiertes Muster Seite 3 Seminar - Entwurfsmuster Daniel Webelsiep

4 Ein kurzes Beispiel (1) Beispiel eines kleinen Unternehmens
Bearbeitung der Anfragen von Kunden Realisierung via Zuständigkeitskette Seite 4 Seminar - Entwurfsmuster Daniel Webelsiep

5 Ein kurzes Beispiel (2) Anfragen werden je nach Wichtigkeit von der einzelnen Person bearbeitet oder weitergeleitet Sehr wichtige Anfragen können nur vom Vorstand bearbeitet werden Seite 5 Seminar - Entwurfsmuster Daniel Webelsiep

6 Definitionen "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." (Quelle: GoF) "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: Applied Java Patterns) Seite 6 Seminar - Entwurfsmuster Daniel Webelsiep

7 Allgemeine Struktur 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 Seite 7 Seminar - Entwurfsmuster Daniel Webelsiep

8 Layoutänderung - Adhoc
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 Quelltext Seite 8 Seminar - Entwurfsmuster Daniel Webelsiep

9 Der Einsatz der CoR Einführung des Interfaces LayoutHandler mit definierter Bearbeitungsmethode, C# - Mehrfachvererbung Alle Klassen der Kette müssen das Interface implementieren Seite 9 Seminar - Entwurfsmuster Daniel Webelsiep

10 CoR zur Laufzeit Bearbeitung findet als Kette statt
Quelltext Bearbeitung findet als Kette statt Lose Kopplung zwischen Sender und Empfänger Verhalten wird zur Laufzeit bestimmt Seite 10 Seminar - Entwurfsmuster Daniel Webelsiep

11 Nachrichtenkodierung
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 Seite 11 Seminar - Entwurfsmuster Daniel Webelsiep

12 Verschiedene Strukturen (1)
Zuständigkeitskette als Baum Benutzt die gegebene Struktur des GUIs Beispiel implemen- tiert die Baum- struktur teilweise Seite 12 Seminar - Entwurfsmuster Daniel Webelsiep

13 Verschiedene Strukturen (2)
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 Seite 13 Seminar - Entwurfsmuster Daniel Webelsiep

14 Implementierungs-Varianten
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 Seite 14 Seminar - Entwurfsmuster Daniel Webelsiep

15 Konsequenzen 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 Seite 15 Seminar - Entwurfsmuster Daniel Webelsiep

16 Praxisbeispiele 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 Seite 16 Seminar - Entwurfsmuster Daniel Webelsiep

17 Fazit 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 Seite 17 Seminar - Entwurfsmuster Daniel Webelsiep

18 Danke für die Aufmerksamkeit!
Fragen? Danke für die Aufmerksamkeit! Seite 18 Seminar - Entwurfsmuster Daniel Webelsiep


Herunterladen ppt "Chain of Responsibility"

Ähnliche Präsentationen


Google-Anzeigen