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