Eine typische Implementierung könnte so aussehen: Ihr Objekt ist beobachtbar. Jedes Mal ändert sich also einer der (beobachteten) Werte, ein Ereignis wird ausgelöst und alle registrierten Listener werden benachrichtigt. Einer dieser Listener sollte nun die Benachrichtigung übernehmen und eine EMail (Java Mail API) erstellen und senden.
Nehmen wir eine Beispiel-Bean, die wir beobachtbar machen:
%Vor%Die Listener-Schnittstelle:
%Vor%Die beobachtbare Schnittstelle:
%Vor%Und der EMailer:
%Vor%BEARBEITEN Es wurde ein hässlicher Fehler in der Setter-Methode behoben - jetzt wird das Ereignis ausgelöst nachdem die Eigenschaft festgelegt wurde. Umgekehrt, wenn ein Zuhörer die geänderte Eigenschaft gelesen hat, sah er immer noch den alten, unveränderten Wert ...
Wenn Sie nur etwas über die Eigenschaften eines Objekts wissen möchten, das geändert wird, würde ich empfehlen, ein PropertyChangeListener
. Auf diese Weise können Sie die PropertyChangeSupport
Hilfsklasse zum Verwalten Ihrer Listener-Instanzen und das Auslösen von Ereignissen. Sie vermeiden auch, das Rad neu zu erfinden.
Für eine maßgeschneiderte Ereignisauslösung empfehle ich, eine eigene Listener-Schnittstelle zu definieren.
Beispielklasse
%Vor%Beispiel Verwendung
%Vor%Sie sollten das Beobachterdesignmuster verwenden. Dieses Muster verwendet diese Klassen:
Hier ist ein Beispiel.
Der Beobachter:
%Vor%Das beobachtbare Objekt:
%Vor%Und die Hauptklasse:
%Vor%Tags und Links java