Java Reference
In-Depth Information
Objekt dar. Dies führt wiederum zu einer Schachtelung der Methodenaufrufe und zu ei-
ner neuen verschobenen Ausführungsspezifikation.
Das folgende Sequenzdiagramm zeigt exemplarisch die Anmeldung und Aktualisie-
rung eines Beobachters:
:Beobachtbar
:Beobachter
anmelden (this)
anmelden()
setzeZustand()
ben
achrichtigen()
aktualisieren (this)
aktualisieren ()
gibZustand()
gibZustand() : zustand
Bild 4-35 Sequenzdiagramm für die Anmeldung und Aktualisierung eines Beobachters
4.11.3.4 Lösungsvariante mit dem Push-Verfahren
Die bisher beschriebene Pull-Variante ist dadurch charakterisiert, dass ein Beobachter
zwar über eine Zustandsänderung informiert wird (Methode
aktualisieren()
), er
aber danach sich die Informationen über den neuen Zustand beim beobachteten Ob-
jekt abholen muss (Methode
gibZustand()
).
In der Push-Variante werden die beiden genannten Methoden praktisch zu einer einzi-
gen zusammengeführt: die Methode
aktualisieren()
erhält zusätzlich einen oder
mehrere Parameter, die den neuen Zustand des Beobachtbaren beschreiben
59
. Durch
einen Aufruf dieser modifizierten Methode
aktualisieren()
beim Beobachter
"drückt" (push) das beobachtete Objekt gleich alle Informationen zu dem Beobachter
hin. Die Methode
gibZustand()
kann entfallen.
Der Vorteil des Push-Verfahrens liegt damit auf der Hand: der Rückruf des Beob-
achters, um sich Informationen zu beschaffen, entfällt. Häufig sind im Pull-Verfahren
für diese Informationsbeschaffung sogar mehrere Methodenaufrufe nötig - je nachdem
wie die Schnittstelle vom Beobachtbaren konzipiert ist - die alle im Push-Verfahren
überflüssig werden.
Ein Vorteil des Pull-Verfahrens ist darin zu sehen, dass die Schnittstelle zum Abholen
der Information "breit" gemacht werden kann: Statt der bisher genannten Methode
59
Damit verringert sich die Wiederverwendbarkeit der Methode
aktualisieren()
deutlich.






























Search WWH ::

Custom Search