Dieser Artikel beschreibt den Listener -Modus des Java -Designmusters. Teilen Sie es für Ihre Referenz wie folgt weiter:
Der Hörermodus verfügt über drei Elemente - Ereignisquelle, Ereignisobjekt und Hörer.
Ereignisquelle: Wie der Name schon sagt, gehört die Quelle des Ereignisses, wie z.
Ereignisobjekt: Dies wird oft mit der Ereignisquelle verwechselt. Es wird oft verwendet, um die Ereignisquelle zu verpacken. Denken Sie daran, dass es schließlich ein Ereignis ist, z. B. Klicken auf Ereignisse. Der Unterschied zwischen der Ereignisquelle unterscheidet sich von der Ereignisquelle. Es gibt keine Möglichkeit, es zu fühlen;
Hörer: Dies ist der Kern des Listener -Modus, der die Aktionen nach einem Ereignis definiert. Normalerweise wird das Ereignisobjekt als Parameter als eine im Hörer definierte Funktion eingegeben.
Hier ist eine einfache Kastanie:
Der Hintergrund der Geschichte ist, dass Xiao Ming ein unhygienisches Kind ist. Seine Mutter ist sehr besorgt über seine Gesundheit und sieht vor, dass ihre Hände vor den Mahlzeiten gewaschen werden müssen.
Definieren Sie ein ungezogenes Kind. Freche Kinder sind die zu überwachenden Objekte, die Quelle der Ereignisse, und alle Ereignisse werden von der Quelle der Ereignisse gesendet, die Unsinn zu sein scheint.
public Class Child {privater Zeichenfolge Name; private remindListener remindListener; öffentliches Kind (Zeichenfolge Name) {this.name = name; } public void eat () {if (null! } System.out.println ("Child Eat ..."); } public void addListener (remindListener louser) {remindListener = louser; }}Als nächstes sehen Sie sich das Ereignisobjekt an, das, wie oben erwähnt, die Ereignisquelle einwickelt. Hier definieren wir ein Ereignis für Handwäsche vor dem Merkmal.
öffentliche Klasse RemindwashingHandSevent {Private Child Kind; public remindwashingHandsevent (Kind Kind) {this.child = Kind; }} Das Ereignisobjekt definiert die Eigenschaften und den Status des Ereignisses.
Unmittelbar nach dem Ereignis werden die Handlungen des Hörers an die Hände des Waschens erinnert.
public class remindListener (public void erinnern (remindwashingHandSevent remindwashingHandSevent) {System.out.println ("Hör Mama an, waschen Sie die Hände vor dem Essen ..."); }}Beachten Sie, dass der Zuhörer hauptsächlich Aktionen zusammenfasst, das ist alles.
Der obige Code ist nur, um das Prinzip des Listener -Modus zu veranschaulichen, und der Code ist einfach und nicht sehr elegant.
Die folgenden Erben oder implementiert die Java -Standardbibliothek und schreibt beiläufig ein Codepaar. Es ist spät in der Nacht und ich werde es erklären, wenn ich Zeit habe.
public class kid {private String name; private Liste <Hörer> Litener; public kid (string name) {this.name = name; this.liteners = lists.NewarrayList (); } public void eat () {für (Hörer -Hörer: Litener) {if (Hörerinstanz von WashehandsListener) {WaschehandsListener WaschehandsListener = (WaschehandsListener) Hörer; WaschehandsListener. }} System.out.println ("Eat ..."); } public void addListener (Listener -Listener) {Liteners.Add (Hörer); }} public class Event erweitert EventObject { /*** konstruiert ein Prototypereignis. * * @param Quelle das Objekt, auf dem das Ereignis ursprünglich aufgetreten ist. * @Throws illegalArgumentException Wenn Quelle null ist. */ public event (Objektquelle) {Super (Quelle); }} public class WashhandSEvent erweitert das Ereignis {private String eventName; /*** konstruiert ein Prototypereignis. * * @param Quelle das Objekt, auf dem das Ereignis ursprünglich aufgetreten ist. * @Throws illegalArgumentException Wenn Quelle null ist. */ public waschehandsevent (Objektquelle, String eventName) {Super (Quelle); this.eventname = eventname; } public String getEventName () {return eventName; } public void setEventName (String eventName) {this.eventname = eventName; }} public interface louser erweitert java.util.eventListener {public void fireGerEventInvoked (Ereignisereignis);} öffentliche Klasse WashhandsListener implementiert Hörer {@Override public void Fire DeVentinvoKed (Ereignisereignis) {Waschlehandsevent Washandsevent = (Waschlehandsevent) Ereignis; System.out.println ("Zubereitung vor den Mahlzeiten" + Waschehandsevent.geVentName ()); }} public class Test {public static void main (String [] args) {kid xiaoming = new Kid ("xiaoming"); Xiaoming.AddListener (neuer Waschlagener ()); Xiaoming.eat (); }}Ausgangsergebnis:
Für mehr Java-bezogene Inhalte können Leser, die an dieser Website interessiert sind, die Themen anzeigen: "Java-Datenstruktur und Algorithmus-Tutorial", "Zusammenfassung der Java-Operation DOM-Knoten-Tipps", "Zusammenfassung der Java-Datei- und Verzeichnisoperationstipps" und "Zusammenfassung von Java Cache Operation Tipps" "
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.