Beobachter [ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]


Übersicht


(engl. Observer)

Das Muster Beobachter wird benutzt, wenn Daten zentral in einem Subjekt (Subject) verwaltet werden und mehrere Beobachter (Observer) darauf Zugriff haben. Aktionen können sowohl von den Beobachtern als auch vom Subjekt initiiert werden und Änderungen im Zustand des Subjektes zur Folge haben. In diesem Fall muß das System für Konsistenz sorgen, d.h. alle Beobachter müssen von der Zustandsänderung informiert werden.

Das Muster besteht aus den abstrakten Klassen Subjekt und Beobachter. Die Klasse Subjekt hält eine Liste auf n Beobachter. Außerdem enthält Beobachter die Methode update(), bei deren Aufruf dem Beobachter signalisiert wird, daß sich das Subjekt geändert hat. Im abstrakten Subjekt gibt es neben Methoden zum An- und Abmelden von Beobachtern (login(Beobachter), logout(Beobachter)) die Methoden broadcast(), die die Beobachter mittels der update()-Methoden informieren.
Da sowohl Subjekt, als auch Beobachter abstrakt sind, muß man bei konkreten Anwendungen natürlich von den beiden Basisklassen ableiten. Diese abgeleiteten Klassen habe ich in der folgenden Graphik als Server und Client bezeichnet.

 Abb. 1: Das Observer Design Pattern



[ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]
Stand: 31.03.2005, Autor: bates@informatik.uni-rostock.de