Der Mechanismus der Benachrichtigung kann nach dem
Entwurfsmuster Observer implementiert werden. Hierzu dienen die Klasse
java.util.Observable
(sie muss erweitert werden) und die Schnittstelle
java.util.Observer (ihre einzige
Methode update()
muss implementiert werden). Die Idee ist dabei, dass diejenigen, die
benachrichtigt werden möchten (die
Observer, die Nachricht-Empfänger),
sich bei Observable
(beim Nachricht-Sender) registrieren. Hierzu dient die Methode
Observable.addObserver().
Der Benachrichtiger (die Klasse, die die Ereignisse verschickt) erbt diese
Methode von Observable;
diese Oberklasse verwaltet alle registrierten
Observer. Sobald ein Ereignis
auftritt, muss ihre Methode
super.notifyObservers()
aufgerufen werden. Daraufhin ruft
Observable die
update()-Methode
aller registrierten Observer auf. Hierbei bekommen sie Parameter, aufgrund
dessen sie erkennen können, welches Ereignis aufgetreten ist und welches
Observable es
ausgelöst hat (ein Observer
kann sich ja bei mehreren
Observable-Objekten registriert haben); wie sie darauf reagieren
sollen, wird in update()
implementiert.
In der Java-Bibliothek ist die Signatur von
Observer.update()
void
update(Observable o, Object arg)
Daher bekommt der Empfänger die Information darüber,
welcher Observable ihm die Nachricht geschickt hat. Gleichzeitig können ihm
weitere Daten über das Ereignis als
Object verschickt werden; diese
werden mit notifyObservers(Object
arg) als Parameter übergeben. In anderen Lösungen steht hierfür
eine extra Methode getData()
zur Verfügung.
Version: 19. April 2012
© Prof. Solymosi, 20102 Beuth-Hochschule für Technik Berlin, Fachbereich VI (Informatik und Medien)
solymosibht-berlin.de