Java Reference
In-Depth Information
gibZustand() können mehrere get-Methoden zur Verfügung gestellt werden. Ein
Beobachter kann dann entscheiden, welche Information er sich abholt. In der Push-
Variante wird ein Beobachter immer mit der maximalen Information "geflutet".
Eine breite Schnittstelle beim Pull-Verfahren hat auch noch einen kleinen Vorteil be-
züglich der Wartbarkeit: Wenn die Klasse Beobachtbar erweitert wird und zusätz-
liche Daten zu einem Zustandswechsel bereitstellen möchte, kann dies in manchen
Fällen über zusätzliche get-Methoden im Interface IBeobachtbar erfolgen. Beob-
achter, die diese zusätzlichen Daten nicht benötigen, brauchen in diesen Fällen nicht
geändert zu werden. In der Push-Variante würde die Methode aktualisieren() um
zusätzliche Parameter erweitert, was in jedem Fall eine Änderung der Beobachter-
Klassen erfordert. Es sei aber darauf hingewiesen, dass weitergehende Änderungen
im Interface IBeobachtbar als die gerade beschriebenen auch in der Pull-Variante
zu Änderungen in den Beobachter-Klassen führen.
Der Vorteil des Push-Verfahrens liegt auf der Hand: der Rückruf des Beobachters, um
sich Informationen zu beschaffen, entfällt. Bei einer breiten Schnittstelle sind im Pull-
Verfahren für diese Informationsbeschaffung sogar mehrere Methodenaufrufe nötig,
die alle im Push-Verfahren überflüssig werden. Allerdings hat bei der Push-Schnittstel-
le jede Anwendung ihre eigenen Parameter. Damit kann die entsprechende Methode
in der Regel nicht wiederverwendet werden.
4.11.3.5 Programmbeispiel
In diesem Beispiel wird das Beobachter-Muster anhand eines Newsletter gezeigt. Dem
Newsletter soll es möglich sein, seine Abonnenten zu verwalten und zu benachrichti-
gen, wenn es neue Informationen gibt. Das Beispiel ist gemäß dem Pull-Verfahren auf-
gebaut.
Das Interface IBeobachter definiert einen Beobachter, der durch die Methode ak-
tualisieren() über Änderungen informiert werden kann:
// Datei: IBeobachter.java
public interface IBeobachter
{
public void aktualisieren (IBeobachtbar b);
}
Das Interface IBeobachtbar wird durch ein beobachtbares Objekt implementiert, das
seine Beobachter mit den Methoden anmelden() und abmelden() verwaltet. Mit der
Methode gibZustand() können sich die angemeldeten Beobachter über die Ände-
rungen informieren. Hier das Interface IBeobachtbar :
// Datei: IBeobachtbar.java
public interface IBeobachtbar
{
public void anmelden (IBeobachter beobachter);
public void abmelden (IBeobachter beobachter);
public String gibZustand();
}
Search WWH ::




Custom Search