Upload
anke-kark
View
103
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
Fragen?Fragen?
Seite 18 Seminar - Entwurfsmuster Daniel Webelsiep
Danke für die Aufmerksamkeit!Danke für die Aufmerksamkeit!