Einführung Inhaltsverzeichnis 2. Darstellung von Variablen und Werten

7. Das Entwurfsmuster Observer

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.

Observer

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.

MVC mit Observer

Einführung Inhaltsverzeichnis 2. Darstellung von Variablen und Werten


Version: 19. April 2012

© Prof. Solymosi, 20102 Beuth-Hochschule für Technik Berlin, Fachbereich VI (Informatik und Medien)

solymosibht-berlin.de