Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Evagret Steinmann Geändert vor über 8 Jahren
1
Neukonzeptionierung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 1 Observer - Pattern Malte Legenhausen, Robert Werschnitzke Asea Brown Boveri (ABB) Deutsches Zentrum für Luft- und Raumfahrt (DLR)
2
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 2 Gliederung Das erwartet Sie… Allgemein Wovon reden wir überhaupt? Beispiel Die Tageszeitung UML Darf natürlich nicht fehlen Vor- und Nachteile Benutzen oder nicht benutzen? Beispiel Mal was Praktisches
3
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 3 Allgemein Wovon reden wir überhaupt? Entwurfsmuster -> Verhaltensmuster dient der Weitergabe von Änderungen an einem Objekt bezieht sich auf von diesem Objekt abhängige Strukturen ideal wenn Instanzen verschiedener Klassen über Änderungen informiert werden sollen
4
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 4 Allgemein Ein Bild dazu
5
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 5 Beispiel Die Tageszeitung „veröffentlichen und abonnieren“ wird ständig produziert (aktualisiert) Kunden können ein Abo abschließen oder ein bestehendes kündigen Verlag das Subject (Publisher) Abokunden die Observer
6
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 6 UML Mal ein Klassendiagramm dazu…
7
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 7 UML … und ein Sequenzdiagramm
8
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 8 Vor- und Nachteile Benutzen oder nicht benutzen? Vorteil Subjekt und Observer sind lose gekoppelt Subjekt brauch keine Kenntnisse über die Observer bedient nur die Observer-Schnittstelle Broadcast-Kommunikation Benachrichtigung muss den Empfänger nicht kennen. Nachteil unerwartete Updates: Der Beobachter weiß nicht, wie viele weitere Beobachter es gibt, und kann daher auch nicht einschätzen, wie aufwändig eine Statusänderung ist
9
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 9 Beispiel Mal was Praktisches… Reaktion auf asynchrone Ereignisse GUI Programmierung Reaktion auf Benutzer Ereignisse Observer wird zu Listener Model View Controller - Pattern Lose Kopplung mit dem Model Synchronisierung von Model und View Überwachung von komplexen Objekten bis hin zu einzelnen Attributen PropertyChangeListener (JDK)
10
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 10 Beispiel … und ein bisschen Code public interface FooListener { void somethingHappend(String happening); } public class Foo { private List listeners = new ArrayList (); public void addListener(FooListener listener) { listeners.add(listener); } public void removeListener(FooListener listener) { listeners.remove(listener); } public void notifyListeners(String happening) { for(FooListener listener : listeners) { listener.somethingHappend(happening); }
11
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 11 Beispiel … und ein bisschen Code class Bar { public static void main() { Foo myFoo = new Foo(); FooListener listener = new FooListener() { public void somethingHappend(String happening) { // Do something with the happening... } }; myFoo.addListener(listener);... myFoo.doSomethingWhereSomethingHappend();... myFoo.removeListener(listener); }
12
Neukonzeptioneriung des SVNCheckers > Malte Legenhausen > DLR > 22.09.2008 Folie 12 Ende Das war es auch schon... http://de.wikibooks.org/wiki/Muster:_Observer Head First, Design Patterns von O‘Reilly http://de.wikipedia.org/wiki/Observer_Pattern
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.