Benutzerdefinierter Listener in Java

8

In meiner Web-App muss ich während einer Änderung des Objekts eine E-Mail über die Änderungen senden, die im Objekt stattgefunden haben. Meine Frage ist, wie man einen Listener dafür schreibt. Bitte geben Sie mir einen Artikel dazu. Danke

    
Manoj 02.07.2010, 09:56
quelle

4 Antworten

22

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 ...

    
Andreas_D 02.07.2010, 10:29
quelle
6

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%     
Adamski 02.07.2010 10:48
quelle
3

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%     
ToYonos 16.12.2014 09:54
quelle
1

Verwenden Sie das Observer-Entwurfsmuster Ссылка . Ссылка

    
Shekhar 02.07.2010 10:18
quelle

Tags und Links