Java Reference
In-Depth Information
Klassisch würde ein Beobachter per Polling
55
anfragen, ob sich Daten geändert haben.
Beim Beobachter-Muster ist jedoch die Kontrolle vertauscht - die Kontrolle hat der
Beobachtbare. Bei einer Änderung der Daten generiert der Beobachtbare ein Ereignis
für den Beobachter. Diese Vorgehensweise beim Beobachter-Muster entspricht also
dem Prinzip "
Inversion of Control
" (siehe Kapitel 1.9.2).
Das folgende Bild zeigt die Abhängigkeit einer Beobachter-Klasse von der beobacht-
baren Klasse:
:Beobachter
:Beobachter
«use»
«use»
:Beobachtbar
Bild 4-33 Abhängigkeit eines Beobachters vom beobachtbaren Objekt
Eine
Verwendungsbeziehung
ist eine spezielle semantische Ausprägung einer
Ab-
hängigkeitsbeziehung
. Eine Verwendungsbeziehung wird durch
«use»
charakteri-
siert. Der Benutzende ist der Abhängige. Der Benutzte ist der Unabhängige.
In der Regel ist ein Beobachter nicht nur daran interessiert, ob sich ein von ihm beo-
bachtetes Objekt ändert, sondern auch daran, was sich bei dem Objekt geändert hat,
bzw. wie dessen neuer Zustand ist. Um den Beobachtern den neuen Zustand mitzutei-
len, gibt es im Rahmen dieses Musters zwei verschiedene Verfahren. Im
Push-Ver-
fahren
wird der neue Zustand an die Aktualisierungs-Operation übergeben - die Da-
ten werden einem Beobachter "zugeschoben". Im
Pull-Verfahren
ist der Beobachter
hingegen selbst für das Abfragen des neuen Zustandes verantwortlich - er "zieht" sich
die Daten, wenn er informiert wurde, dass die Daten sich geändert haben. Hierfür be-
nötigt er eine Referenz auf den Beobachtbaren, der eine Methode für die Abfrage der
geänderten Daten zur Verfügung stellen muss. Im Folgenden wird das Pull-Verfahren
behandelt. Das Push-Verfahren wird dann in Kapitel 4.11.3.3 im Detail vorgestellt. Dort
wird auch ein Vergleich zwischen beiden Verfahren durchgeführt.
4.11.3.1 Klassendiagramm
Charakteristisch für das Beobachter-Muster in der
Pull-Variante
sind zwei Methoden,
die Methode
aktualisieren()
und die Methode
gibZustand()
. Beim Aufruf der
Methode
aktualisieren()
übergibt ein beobachtbares Objekt eine Referenz auf
55
to poll (engl.) bedeutet abfragen. In der Informatik hat Polling die Bedeutung, dass mittels regelmä-
ßiger zyklischer Abfragen der Zustand von Daten (Objekten, Geräten etc.) ermittelt wird.
Search WWH ::
Custom Search