Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Ähnliche Präsentationen


Präsentation zum Thema: "Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation."—  Präsentation transkript:

1 Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation

2 Morad Harrach 2SS 05 PP_XP Gliederung 1.MVC (Model View Controller) - Pattern 2.Observer (Beobachter) – Pattern 3.Command (Befehls) – Pattern 4.Mediator (Vermittler) – Pattern 5.Chain of Responsibility (Zuständigkeitskette)-Pattern

3 Morad Harrach 3SS 05 PP_XP 1.MVC – Pattern Struktur Das Model-View-Controller-Muster (MVC) unterteilt eine interaktive Anwendung in drei Komponenten - Model: enthält die dauerhaften Daten einer Anwendung. Verwaltet Daten unabhängig von der Präsentation - Model: enthält die dauerhaften Daten einer Anwendung. Verwaltet Daten unabhängig von der Präsentation - View: die Darstellungsschicht präsentiert die Daten. Beinhaltet die visuellen Elemente (Fenster, Buttons, HTML, etc.). - View: die Darstellungsschicht präsentiert die Daten. Beinhaltet die visuellen Elemente (Fenster, Buttons, HTML, etc.). - Control: die Steuerungsschicht realisiert die eigentliche Arbeit. Sie steuert den Ablauf, ändert Modelldaten, entscheidet, welche View aufgerufen wird. - Control: die Steuerungsschicht realisiert die eigentliche Arbeit. Sie steuert den Ablauf, ändert Modelldaten, entscheidet, welche View aufgerufen wird.

4 Morad Harrach 4SS 05 PP_XP 1.MVC-Pattern Probleme bei der Anwendung des Musters: - Dieselbe Information wird in unterschiedlichsten Fenstern auf verschiedene Weise dargestellt, z.B. Balken- oder Kuchendiagramme. - Grafische Darstellung und Verhalten der Anwendung müssen Datenänderungen sofort widerspiegeln. - Unterstützung verschied. Standards für Erscheinungs- bild und Bedienmerkmale, ohne das dabei der funktionale Kern geändert werden muss. - Änderungen an der Benutzeroberfläche auch zur Laufzeit. - Dieselbe Information wird in unterschiedlichsten Fenstern auf verschiedene Weise dargestellt, z.B. Balken- oder Kuchendiagramme. - Grafische Darstellung und Verhalten der Anwendung müssen Datenänderungen sofort widerspiegeln. - Unterstützung verschied. Standards für Erscheinungs- bild und Bedienmerkmale, ohne das dabei der funktionale Kern geändert werden muss. - Änderungen an der Benutzeroberfläche auch zur Laufzeit.

5 Morad Harrach 5SS 05 PP_XP 1.MVC-Pattern Abbildung Quelle:

6 Morad Harrach 6SS 05 PP_XP 1.MVC-Pattern Interaktion Wenn ein Anwender das Model mit Hilfe der Steuerungs- komponente einer Ansicht ändert, sollten alle Views des Models diese Änderung anzeigen. Wenn ein Anwender das Model mit Hilfe der Steuerungs- komponente einer Ansicht ändert, sollten alle Views des Models diese Änderung anzeigen. Model benachrichtigt seine Views, sobald sich Daten ändern. Model benachrichtigt seine Views, sobald sich Daten ändern. Views entnehmen die neuen Daten und passen die an- gezeigte Information an. Views entnehmen die neuen Daten und passen die an- gezeigte Information an.

7 Morad Harrach 7SS 05 PP_XP 1.MVC-Pattern Anwendung Verwendung: zur Entwicklung Benutzeroberflächen für interaktive Anwendungen, z.B. Smalltalk-80-Umgebung Verwendung: zur Entwicklung Benutzeroberflächen für interaktive Anwendungen, z.B. Smalltalk-80-Umgebung Erstellung von Windows-Anwendungen in der Entwicklungs- umgebung von Visual C++ Erstellung von Windows-Anwendungen in der Entwicklungs- umgebung von Visual C++ Vorteile: Vorteile: - mehrere Views desselben Modells. - mehrere Views desselben Modells. - austauschbare Views - austauschbare Views - Potential für Frameworks - Potential für Frameworks Nacheile: Nacheile: - größere Komplexität - größere Komplexität - ineffizienter Datenzugriff innerhalb der Views - ineffizienter Datenzugriff innerhalb der Views - etc. - etc.

8 Morad Harrach 8SS 05 PP_XP 2.Observer-Pattern Zweck: Definiere eine 1-zu-n Abhängigkeit zwischen Objekten, so dass die Änderung des Zustandes eines Objektes zu einer Aktualisierung aller abhängigen Objekte führt. Zweck: Definiere eine 1-zu-n Abhängigkeit zwischen Objekten, so dass die Änderung des Zustandes eines Objektes zu einer Aktualisierung aller abhängigen Objekte führt. Problem: Das unabhängige Objekt soll die abhängigen Objekte bzgl. Veränderungen benachrichtigen, ohne Annahmen zu treffen, wer und wie viele dies sind (lose gekoppelt). Problem: Das unabhängige Objekt soll die abhängigen Objekte bzgl. Veränderungen benachrichtigen, ohne Annahmen zu treffen, wer und wie viele dies sind (lose gekoppelt). Lösung: Ein oder mehrere Objekte (Observer) möchten bei der Veränderung eines Objekts (Subject) eine Methode ausführen, die auf den veränderten Zustand zugreifen kann. Die Observer registrieren sich beim Subject. Lösung: Ein oder mehrere Objekte (Observer) möchten bei der Veränderung eines Objekts (Subject) eine Methode ausführen, die auf den veränderten Zustand zugreifen kann. Die Observer registrieren sich beim Subject.

9 Morad Harrach 9SS 05 PP_XP 1.Observer-Pattern Abbildung Model-Objekt und drei View-Objekte Quelle: Design Patterns, Elements of Reusable Object Oriented Software

10 Morad Harrach 10SS 05 PP_XP 2.Observer-Pattern Anwendung - Abstraktion mit zwei voneinander abhängigen Aspekten - wenn ein Aspekt von dem anderen abhängt - Kapselung der Aspekte in unterschiedlichen Objekten - unabhängig widerverwendbar - Kaskadierende Änderung - wenn die Änderung eines Objekts die Änderung anderer Objekte verlangt. - Ungewißheit über Anzahl der Objekte die geändert werden müssen. Objekte verlangt. - Ungewißheit über Anzahl der Objekte die geändert werden müssen. - Benachrichtigung unbekannter Objekte - ohne Annahmen über die zu benachrichtigenden Objekte - Vermeidung von eng gekoppelten Objekten.

11 Morad Harrach 11SS 05 PP_XP 2.Observer-Pattern Struktur Quelle: Design Patterns, Elements of Reusable Object Oriented Software

12 Morad Harrach 12SS 05 PP_XP 2.Observer-Pattern Struktur Subject - kennt seine Observer Subject - kennt seine Observer Observer - definiert update()- Schnittstelle Observer - definiert update()- Schnittstelle ConcreteObserver - verwaltet Referenz auf das Subjekt - speichert Zustand der mit dem Subjekt zusammen passen soll. - implementiert update() um Zustand mit dem des Subjekts konsistent zu halten. ConcreteObserver - verwaltet Referenz auf das Subjekt - speichert Zustand der mit dem Subjekt zusammen passen soll. - implementiert update() um Zustand mit dem des Subjekts konsistent zu halten.

13 Morad Harrach 13SS 05 PP_XP 2.Observer-Pattern Interaktion Beobachter werden durch Konkretes Subjekt benachrichtigt sobald sich der Zustand (Subjekt) ändert. Beobachter werden durch Konkretes Subjekt benachrichtigt sobald sich der Zustand (Subjekt) ändert. Mit Hilfe von Anfragen an das Subjekt wird der jeweilige Zustand ermittelt. Mit Hilfe von Anfragen an das Subjekt wird der jeweilige Zustand ermittelt. Subject: - Zustand ändert sich - benachrichtigt alle Konkreten Beobachter Subject: - Zustand ändert sich - benachrichtigt alle Konkreten Beobachter Concrete Observer: - befragt Subjekt nach Informationen - verwendet Informationen um seinen Zustand mit dem des Subjekts abzugleichen - update() Concrete Observer: - befragt Subjekt nach Informationen - verwendet Informationen um seinen Zustand mit dem des Subjekts abzugleichen - update()

14 Morad Harrach 14SS 05 PP_XP 3.Mediator-Pattern Zweck: Zweck: Erzeuge ein Objekt, welches das Zusammenspiel einer Menge Erzeuge ein Objekt, welches das Zusammenspiel einer Menge von Objekten in sich kapselt. Vermittler erreichen, das das von Objekten in sich kapselt. Vermittler erreichen, das das Zusammenspiel der Objekte von ihnen unabhängig zu variieren. Zusammenspiel der Objekte von ihnen unabhängig zu variieren. Problem: Problem: - Viele Verbindungen zwischen Objekten - Schwierigkeit das Verhalten des Systems auf bedeutsame Weise zu ändern, da Verhalten über so viele Objekte verstreut ist => viele Unterklassen. - Unterschiedliche Dialogboxen besitzen unterschiedliche Abhängigkeiten.

15 Morad Harrach 15SS 05 PP_XP 3.Mediator-Pattern Lösung: Separates Vermittlerobjekt kapseln. Lösung: Separates Vermittlerobjekt kapseln. Vermittler ist für Kontrolle und Koordination der Interaktion innerhalb einer Gruppe von Objekten zuständig. Vermittler ist für Kontrolle und Koordination der Interaktion innerhalb einer Gruppe von Objekten zuständig. Objekte kennen Vermittler und reduzieren dadurch Anzahl ihrer Verbindungen. Objekte kennen Vermittler und reduzieren dadurch Anzahl ihrer Verbindungen. Vermittler verhindert das Objekte Bezug zueinander nehmen. Vermittler verhindert das Objekte Bezug zueinander nehmen.

16 Morad Harrach 16SS 05 PP_XP 3.Mediator-Pattern Anwendung Eine Menge von Objekten vorliegt, die in komplexer Weiser miteinander zusammenarbeiten. Eine Menge von Objekten vorliegt, die in komplexer Weiser miteinander zusammenarbeiten. Die Wiederverwendung eines Objektes schwierig ist, Die Wiederverwendung eines Objektes schwierig ist, da es mit vielen anderen Objekten zusammenarbeitet. da es mit vielen anderen Objekten zusammenarbeitet. Ein auf mehrere Klassen verteiltes Verhalten angepaßt werden soll, ohne viele Unterklassen bilden zu müssen. Ein auf mehrere Klassen verteiltes Verhalten angepaßt werden soll, ohne viele Unterklassen bilden zu müssen.

17 Morad Harrach 17SS 05 PP_XP 3.Mediator-Pattern Struktur Quelle: Design Patterns, Elements of Reusable Object Oriented Software

18 Morad Harrach 18SS 05 PP_XP 3.Mediator-Pattern Struktur Mediator (Vermittler): - Schnittstelle für die Interaktion mit KollegenObjekten. Mediator (Vermittler): - Schnittstelle für die Interaktion mit KollegenObjekten. ConcreteMediator: - implementiert Gesamtverhalten durch Koordination der Kollegen- Objekte. ConcreteMediator: - implementiert Gesamtverhalten durch Koordination der Kollegen- Objekte. Colleague – classes : - jede Kollegen-Klasse kennt ihre Mediator-Klasse. - jedes Kollegen-Objekt arbeitet mit Vermittler zusammen, statt mit Kollegen-Objekten. Colleague – classes : - jede Kollegen-Klasse kennt ihre Mediator-Klasse. - jedes Kollegen-Objekt arbeitet mit Vermittler zusammen, statt mit Kollegen-Objekten.

19 Morad Harrach 19SS 05 PP_XP 3.Mediator-Pattern Interaktion Interaktion - Kollegenobjekte senden und empfangen Anfragen von einem Vermittlerobjekt. - Der Vermittler implementiert das Gesamtverhalten durch das Weiterleiten der Anfragen zwischen den richtigen Kollegenobjekten. Interaktion - Kollegenobjekte senden und empfangen Anfragen von einem Vermittlerobjekt. - Der Vermittler implementiert das Gesamtverhalten durch das Weiterleiten der Anfragen zwischen den richtigen Kollegenobjekten.

20 Morad Harrach 20SS 05 PP_XP 3.Mediator-Pattern Beispiel Motivation Programm mit verschiedenen Buttons, zwei Listboxes und einem Text Entry Field. Motivation Programm mit verschiedenen Buttons, zwei Listboxes und einem Text Entry Field. Funktion des Programms - wähle einen Namen aus der ListBox aus, Name wird in das Text Entry Field kopiert, Copy-Button enabled. Funktion des Programms - wähle einen Namen aus der ListBox aus, Name wird in das Text Entry Field kopiert, Copy-Button enabled. - bei Klick auf Copy, wird der Name in die rechte box kopiert, Clear enabled. - bei Klick auf Copy, wird der Name in die rechte box kopiert, Clear enabled. - bei Klick auf Clear-Button, wird rechte box und text Entry Field gelöscht. - bei Klick auf Clear-Button, wird rechte box und text Entry Field gelöscht.

21 Morad Harrach 21SS 05 PP_XP 3.Mediator-Pattern Beispiel

22 Morad Harrach 22SS 05 PP_XP 3.Mediator-Pattern Beispiel Interaktionen anschaulich: Interaktionen anschaulich: Lösung: mit Mediator-Pattern: Lösung: mit Mediator-Pattern:

23 Morad Harrach 23SS 05 PP_XP 3.Mediator-Pattern Beispiel Mediator vereinfacht das System, ist einzige Klasse über alle anderen. Mediator vereinfacht das System, ist einzige Klasse über alle anderen. Alle anderen Klassen werden als Kollegen bezeichnet. Alle anderen Klassen werden als Kollegen bezeichnet. Jeder Kollege informiert den Mediator über neue Aktion. Jeder Kollege informiert den Mediator über neue Aktion. Mediator wird über alle Vorgänge informiert, die stattfinden. Mediator wird über alle Vorgänge informiert, die stattfinden.

24 Morad Harrach 24SS 05 PP_XP 3.Mediator-Pattern Beispiel 1.Schritt: Erstelle Instanz vom Mediator und setzte diese in jede Klasse ein 1.Schritt: Erstelle Instanz vom Mediator und setzte diese in jede Klasse ein Mediator med = new Mediator(); kidList = new KidList( med); tx = new KTextField(med); Move = new MoveButton(this, med); Clear = new ClearButton(this, med); med.init(); 2.Schritt: Copy- und Clear-Button mit dem Mediator initialisieren 2.Schritt: Copy- und Clear-Button mit dem Mediator initialisieren Beispiel: für Copy-Button, Clear-Button analog Beispiel: für Copy-Button, Clear-Button analog

25 Morad Harrach 25SS 05 PP_XP 3.Mediator-Pattern Beispiel public class CopyButton extends JButton implements Command { Mediator med; //copy of the Mediator public CopyButton(ActionListener fr, Mediator md) { super("Copy"); //create the button addActionListener(fr); //add its listener med = md; //copy in Mediator instance med.registerMove(this); //register with the Mediator } public void Execute() { //execute the copy med.Copy(); }

26 Morad Harrach 26SS 05 PP_XP 3.Mediator-Pattern Beispiel 3.Schritt : Erstellen eine Klasse ListSelectionListener, erreichen über ein Klick jedes List Item bis zum Mediator dieser Klasse. 3.Schritt : Erstellen eine Klasse ListSelectionListener, erreichen über ein Klick jedes List Item bis zum Mediator dieser Klasse.

27 Morad Harrach 27SS 05 PP_XP 3.Mediator-Pattern Beispiel public class KidList extends JawtList implements ListSelectionListener } KidData kdata; //reads the data from the file Mediator med; //copy of the mediator public KidList(Mediator md) { super(20); //create the JList kdata = new KidData ("50free.txt"); fillKidList(); //fill the list with names med = md; //save the mediator med.registerKidList(this); addListSelectionListener(this); } public void valueChanged(ListSelectionEvent ls) { //if an item was selected pass on to mediator JList obj = (JList)ls.getSource(); if (obj.getSelectedIndex() >= 0) med.select(); } // private void fillKidList() { Enumeration ekid = kdata.elements(); while (ekid.hasMoreElements()) { Kid k =(Kid)ekid.nextElement(); add(k.getFrname()+" "+k.getLname()); }

28 Morad Harrach 28SS 05 PP_XP 3.Mediator-Pattern Beispiel Beispiel: für Text Field: Beispiel: für Text Field: public class KTextField extends JTextField { Mediator med; public KTextField(Mediator md) { super(10); med = md; med.registerText(this); }

29 Morad Harrach 29SS 05 PP_XP 3.Mediator-Pattern Beispiel Mediator Klasse unterstützt Copy, Clear und ausgewählte Registermethoden für jeden Befehl. Mediator Klasse unterstützt Copy, Clear und ausgewählte Registermethoden für jeden Befehl. Beispiel : Mediator Klasse mit der Methode Copy Beispiel : Mediator Klasse mit der Methode Copy public class Mediator { private ClearButton clearButton; private CopyButton copyButton; private KTextField ktext; private KidList klist; private PickedKidsList picked; public void Copy() { picked.add(ktext.getText()); //copy text clearButton.setEnabled(true); //enable Clear }

30 Morad Harrach 30SS 05 PP_XP 3.Mediator-Beispiel Control Tower am Flughafen ist zentrale Punkt zur Kommunikation zwischen den Flugzeugen. Erlaubnisse zur Landung nur durch Conrol Tower. Mit der zentralen Kommunikation und Verwaltung der Erlaubnisse, stellt der Control Tower den Mediator dar.

31 Morad Harrach 31SS 05 PP_XP 4.Command-Pattern Zweck - Befehle zu kapseln, die innerhalb eines Entwurfs transportiert werden müssen, in Objekte mit gleicher Schnittstelle. Zweck - Befehle zu kapseln, die innerhalb eines Entwurfs transportiert werden müssen, in Objekte mit gleicher Schnittstelle. - Bietet Möglichkeit Befehle rückgängig zu machen, - Bietet Möglichkeit Befehle rückgängig zu machen, Operationen können in eine Queue gestellt werden. Operationen können in eine Queue gestellt werden. Problem Problem - Verschiedene Benutzer wollen mit einer Anwendung auf verschiedene Art und Weise arbeiten. - Verschiedene Benutzer wollen mit einer Anwendung auf verschiedene Art und Weise arbeiten. - Zusätzliche Dienste wie undo sollen für alle Operationen implementiert werden - Zusätzliche Dienste wie undo sollen für alle Operationen implementiert werden

32 Morad Harrach 32SS 05 PP_XP 4.Command-Pattern Anwendung Objekte mit einer auszuführenden Aktion zu parametrieren, und zu einem späteren Zeitpunkt wieder aufzurufen (Callback Funktion). Objekte mit einer auszuführenden Aktion zu parametrieren, und zu einem späteren Zeitpunkt wieder aufzurufen (Callback Funktion). Anfragen zu unterschiedlichen Zeitpunkten zu spezi- fizieren, aufreihen und ausführen wollen. Anfragen zu unterschiedlichen Zeitpunkten zu spezi- fizieren, aufreihen und ausführen wollen. Operationen rückgängig zu machen (undo) oder wieder herzustellen (redo). Operationen rückgängig zu machen (undo) oder wieder herzustellen (redo). Protokollieren von Änderungen, Bsp. im Falle eines Absturz des Systems (Logbuch). Protokollieren von Änderungen, Bsp. im Falle eines Absturz des Systems (Logbuch). Komplexe Operationen zu strukturieren. Komplexe Operationen zu strukturieren.

33 Morad Harrach 33SS 05 PP_XP 4.Command-Pattern Struktur Quelle: Design Patterns, Elements of Reusable Object Oriented Software

34 Morad Harrach 34SS 05 PP_XP 4.Command-Pattern Struktur Command: - definiert eine Schnittstelle zum Ausführen von Operationen. Command: - definiert eine Schnittstelle zum Ausführen von Operationen. ConcreteCommand: - implementiert die Anbindung ConcreteCommand: - implementiert die Anbindung eines Empfängers an eine Aktion. eines Empfängers an eine Aktion. Adressee: - weiß, wie die an die Ausführung einer Anfrage gebundenen Operationen auszuführen sind. Jede Klasse kann Empfänger sein. Adressee: - weiß, wie die an die Ausführung einer Anfrage gebundenen Operationen auszuführen sind. Jede Klasse kann Empfänger sein. Invoker: - fordert Befehlsobjekt auf, Anfrage auszuführen. Invoker: - fordert Befehlsobjekt auf, Anfrage auszuführen. Client: - erzeugt ConcreteCommand Objekt und übergibt es dem Empfänger. Client: - erzeugt ConcreteCommand Objekt und übergibt es dem Empfänger.

35 Morad Harrach 35SS 05 PP_XP 4.Command-Pattern Interaktion Der Client erzeugt Befehlsobjekt einer konkreten Befehlsklasse und bestimmt ihren Empfänger. Der Client erzeugt Befehlsobjekt einer konkreten Befehlsklasse und bestimmt ihren Empfänger. Invoker speichert das Befehlsobjekt der konkreten Klasse. Invoker speichert das Befehlsobjekt der konkreten Klasse. Invoker löst Anfrage über execute()-Operation aus. Wenn Befehle rückgängig gemacht werden können, speichert das Befehlsobjekt vor Ausführen des Befehls den Zustand des Empfängers, um später wiederherstellen zu können. Invoker löst Anfrage über execute()-Operation aus. Wenn Befehle rückgängig gemacht werden können, speichert das Befehlsobjekt vor Ausführen des Befehls den Zustand des Empfängers, um später wiederherstellen zu können. Das konkrete Befehlsobjekt ruft Operationen auf seinem Empfängerobjekt auf und setzt die Anfrage um. Das konkrete Befehlsobjekt ruft Operationen auf seinem Empfängerobjekt auf und setzt die Anfrage um.

36 Morad Harrach 36SS 05 PP_XP 4.Command-Pattern Beispiel Motivation Motivation Erstellen eines einfachen Java UI, mit Menu Items, Erstellen eines einfachen Java UI, mit Menu Items, Buttons etc., erlauben dem User Anweisungen an Buttons etc., erlauben dem User Anweisungen an das Programm zu geben. das Programm zu geben. Programm besteht aus den Menu Items: -File, Open and File, Exit und einem Button, der durch Klick den Hintergrund rot darstellt. Programm besteht aus den Menu Items: -File, Open and File, Exit und einem Button, der durch Klick den Hintergrund rot darstellt.

37 Morad Harrach 37SS 05 PP_XP 4.Command-Pattern Beispiel Bei Beispiel mit wenig Menu Items and Buttons, funktioniert das gut. Bei Beispiel mit wenig Menu Items and Buttons, funktioniert das gut. Problem: bei vielen Menu Items und Buttons Problem: bei vielen Menu Items und Buttons => uneleganter Code. => uneleganter Code. Lösung: Lösung: Jedem Objekt seine Befehle direkt empfangen zu lassen Jedem Objekt seine Befehle direkt empfangen zu lassen

38 Morad Harrach 38SS 05 PP_XP 4.Command-Beispiel

39 Morad Harrach 39SS 05 PP_XP 5.Chain of Responsibility Zweck: Entkopplung von Sender und Empfänger einer Nachricht. Zweck: Entkopplung von Sender und Empfänger einer Nachricht. Problem: Jenes Objekt das die Hilfsinformation bereit- stellt, jenem Objekt nicht bekannt ist, das die Hilfsanfrage anstößt. Problem: Jenes Objekt das die Hilfsinformation bereit- stellt, jenem Objekt nicht bekannt ist, das die Hilfsanfrage anstößt. Lösung: Mehrere Objekte erhalten Möglichkeit eine Anfrage zu bearbeiten. Nachricht wird entlang einer Kette weitergegeben, bis sie bearbeitet wird. Lösung: Mehrere Objekte erhalten Möglichkeit eine Anfrage zu bearbeiten. Nachricht wird entlang einer Kette weitergegeben, bis sie bearbeitet wird.

40 Morad Harrach 40SS 05 PP_XP 5.Chain of Responsibility Anwendung Mehrere Objekte eine Anfrage bearbeiten, welches Objekt ist nicht bekannt. Mehrere Objekte eine Anfrage bearbeiten, welches Objekt ist nicht bekannt. Eine Anfrage an eines von mehreren Objekten zu senden, ohne den Empfänger anzugeben. Eine Anfrage an eines von mehreren Objekten zu senden, ohne den Empfänger anzugeben. Die Menge der Objekte, welche eine Anfrage bearbeiten sollen, dynamisch festgelegt wird. Die Menge der Objekte, welche eine Anfrage bearbeiten sollen, dynamisch festgelegt wird.

41 Morad Harrach 41SS 05 PP_XP 5.Chain of Responsibility Struktur Quelle: Design Patterns, Elements of Reusable Object Oriented Software

42 Morad Harrach 42SS 05 PP_XP 5.Chain of Responsibility Struktur Client: - löst Anfrage bei einem ConcreteHandler – Objekt in der Kette aus. Client: - löst Anfrage bei einem ConcreteHandler – Objekt in der Kette aus. ConcreteHandler: - arbeitet Anfrage ab. - kann auf seinen Nachfolger zugreifen. - Möglichkeit zum bearbeiten der Anfrage, andernfalls wird Anfrage an Nachfolgeobjekt weitergereicht. ConcreteHandler: - arbeitet Anfrage ab. - kann auf seinen Nachfolger zugreifen. - Möglichkeit zum bearbeiten der Anfrage, andernfalls wird Anfrage an Nachfolgeobjekt weitergereicht. Handler: - definiert Schnittstelle zur Bearbeitung von Schnittstellen. - beinhaltet Verbindung zum Nachfolgeobjekt. Handler: - definiert Schnittstelle zur Bearbeitung von Schnittstellen. - beinhaltet Verbindung zum Nachfolgeobjekt.

43 Morad Harrach 43SS 05 PP_XP 5.Chain of Responsibility Vorteile Reduzierte Kopplung - Sender muß Empfänger nicht kennen - lediglich Referenz auf das Nachfolgeobjekt Reduzierte Kopplung - Sender muß Empfänger nicht kennen - lediglich Referenz auf das Nachfolgeobjekt Flexibilität - Kettenstruktur ist dynamisch erweiterbar und änderbar Flexibilität - Kettenstruktur ist dynamisch erweiterbar und änderbar Keine Abarbeitungsgarantie - da kein impliziter Empfänger - Anfragen können verloren gehen Keine Abarbeitungsgarantie - da kein impliziter Empfänger - Anfragen können verloren gehen

44 Morad Harrach 44SS 05 PP_XP 5.Chain of Responsibility-Beispiel bnbn Ein Bankautomat verwendet einen einzigen Slot für alle Münzen. Wenn eine Münze eingeworfen wird entscheidet eine Kette, welches Rohr das richtige ist für jede Münze. Wenn ein Rohr eine Münze nicht an- nimmt, wird es solange weiterge- leitet bis ein Rohr die Münze an- nimmt.

45 Morad Harrach 45SS 05 PP_XP Literatur Entwurfsmuster, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Addison-Wesley 1996 Entwurfsmuster, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Addison-Wesley 1996 Patternorientierte Softwarearchitektur, Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerland, Michael Stal. Addison-Wesley 1998 Patternorientierte Softwarearchitektur, Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerland, Michael Stal. Addison-Wesley 1998 Vorlesung SS 2002 Design Patterns Vorlesung SS 2002 Design Patterns The Design Patterns, James W.Cooper, Addison-Wesley 1998 The Design Patterns, James W.Cooper, Addison-Wesley 1998


Herunterladen ppt "Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation."

Ähnliche Präsentationen


Google-Anzeigen