Java Reference
In-Depth Information
x Der Beobachtbare muss nie modifiziert werden, um neue Beobachter zu unterstüt-
zen.
x Beobachter und Beobachtbarer können unabhängig voneinander wiederverwendet
werden.
x Änderungen am Beobachtbaren, ohne dessen Interface zu ändern, haben keine
Auswirkung auf die Gegenseite. Ein Beobachter kann auch beliebig geändert wer-
den, solange er das Callback-Interface einhält.
4.11.4.2 Nachteile
Es können jedoch auch Nachteile entstehen:
x Gibt es besonders viele Beobachter, so kann deren Benachrichtigung durch den Be-
obachtbaren sehr zeitaufwendig sein.
x Es muss darauf geachtet werden, dass durch die Behandlung einer Benachrichti-
gung vom Beobachter keine neuen Zustandsänderungen des Beobachteten ausge-
löst werden, da dies sonst zu einer Endlosschleife führen kann.
x Jeder Beobachter wird informiert, auch wenn er eine Änderung nicht braucht.
4.11.5
Einsatzgebiete
Das Beobachter-Muster kommt beispielsweise zum Einsatz, um mehrere Ansichten
auf ein Datenmodell zu ermöglichen. Es ist in der Softwareentwicklung häufig notwen-
dig, dass bei einer Zustandsänderung eines Objektes verschiedene andere Objekte in-
formiert werden. Besonders häufig findet man eine solche Problemstellung bei der
Programmierung grafischer Oberflächen. So ist beispielsweise eine View im Architek-
turmuster Model-View-Controller ein Beobachter im Sinne des Beobachter-Musters.
Das Beobachter-Muster kann auch Verwendung im Vermittler-Muster finden: Objekte
der Klasse Kollege können damit den Vermittler benachrichtigen, der in diesem Falle
die Rolle eines Beobachters einnimmt.
In der Sprache Java gibt es bereits Unterstützung für das Beobachter-Muster: Die
Klasse java.util.Observable implementiert bereits die nötigen Funktionen zur
Verwaltung von Beobachtern für ein beobachtbares Objekt. Es handelt sich dabei also
nicht um ein Interface, wie dies in der bisherigen Beschreibung des Musters der Fall
war, sondern um eine abstrakte Klasse. Um das Beobachter-Muster zu realisieren,
muss man die Klasse eines beobachtbaren Objekts von der Klasse java.util.Ob-
servable ableiten. Des Weiteren wird das Interface java.util.Observer vorge-
geben, das ein Beobachter implementieren muss.
4.11.6
Ähnliche Entwurfsmuster
Sowohl über das Beobachter-Muster als auch über das Vermittler-Muster kann die
Zusammenarbeit von Objekten gesteuert werden. Während beim Vermittler-Muster die
Objekte (die Kollegen) gleichberechtigt sind und potentiell jedes Objekt mit jedem an-
deren über den Vermittler kommunizieren kann, haben die am Beobachter-Muster be-
Search WWH ::




Custom Search