Cet article décrit le mode d'écoute du modèle de conception Java. Partagez-le pour votre référence, comme suit:
Le mode écouteur a trois éléments - source d'événement, objet d'événement et écouteur.
Source de l'événement: Comme son nom l'indique, la source de l'événement, comme le bouton cliqué, appartient à l'objet écouté;
Objet de l'événement: cela est souvent confondu avec la source d'événement. Il est souvent utilisé pour emballer la source d'événement. N'oubliez pas, c'est un événement après tout, comme cliquer sur les événements. La différence entre la source d'événements est différente de la source d'événement. Il n'y a aucun moyen de le ressentir;
Écouteur: c'est le cœur du mode écouteur, qui définit les actions après un événement. Habituellement, l'objet Event est entré en tant que paramètre en fonction d'une fonction définie dans l'auditeur.
Voici une châtaignier simple:
Le contexte de l'histoire est que Xiao Ming est un enfant non hygiénique. Sa mère est très inquiet de sa santé et stipule que ses mains doivent être lavées avant les repas.
Définissez un enfant coquin. Les enfants coquins sont les objets à surveiller, la source d'événements et tous les événements sont envoyés par la source d'événements, qui semble être un non-sens.
classe publique Child {nom de chaîne privée; remindListener privé remindListener; Public Child (String Name) {this.name = name; } public void Eat () {if (null! = remindListener) {remindListener.remind (new remindwashinghandsevent (this)); } System.out.println ("Child Eat ..."); } public void addListener (remindListener écouteur) {remindListener = écouteur; }}Ensuite, consultez l'objet de l'événement, qui, comme mentionné ci-dessus, enveloppe la source de l'événement. Ici, nous définissons un événement de lavage des mains avant le séjour.
classe publique rappellewashinghandsevent {enfant privé; Public rappellewashinghandsevent (enfant enfant) {this.child = enfant; }} L'objet de l'événement définit les propriétés et le statut de l'événement.
Immédiatement après l'événement, les actions de l'auditeur sont rappelées de se laver les mains.
classe publique RemidListener {public void remind (rappelerwashinghandsevent remindwashinghandsevent) {System.out.println ("écouter maman, se laver les mains avant de manger ..."); }}Notez que l'auditeur résume principalement les actions, c'est tout.
Le code ci-dessus est simplement pour illustrer le principe du mode écouteur, et le code est simple et pas très élégant.
Ce qui suit hérite ou implémente la bibliothèque standard Java et écrit une paire de code avec désinvolture. Il est tard dans la nuit, et je l'expliquerai si j'ai le temps.
classe publique Kid {nom de chaîne privée; Liste privée <Deurner> Liteners; public kid (string name) {this.name = name; this.liteners = lists.newArrayList (); } public void Eat () {for (écouteur auditeur: liteners) {if (instance de l'écoute de WashinghandsListener) {WashinghandsListener WashinghandsListener = (WashinghandsListener) auditeur; WashinghandsListener.FirefterEventinvoked (New Washandsevent (ceci, "Wash Your Hands")); }} System.out.println ("manger ..."); } public void addListener (écouteur écouteur) {lideners.add (écouteur); }} L'événement de classe publique étend EventObject {/ ** * construit un événement prototype. * * @param Source l'objet sur lequel l'événement s'est produit initialement. * @throws illégalArgumentException si la source est nul. * / événement public (source d'objet) {super (source); }} classe publique WashingHandSevent étend l'événement {private String EventName; / ** * Construit un événement prototype. * * @param Source l'objet sur lequel l'événement s'est produit initialement. * @throws illégalArgumentException si la source est nul. * / public washandsevent (objet source, string EventName) {super (source); this.eventName = EventName; } public String getEventName () {return EventName; } public void setEventName (String EventName) {this.eventName = EventName; }} L'auditeur de l'interface publique étend java.util.eventListener {public void firaftereventinvoked (événement événementiel);} classe publique WashinghandsListener implémente l'auditeur {@Override public void firafteReventinvoked (événement événement) {washandsevent washinghandsevent = (washandsevent) événement; System.out.println ("Préparation avant les repas" + Washinghandsevent.getEventName ()); }} Test de classe publique {public static void main (String [] args) {kid xiaoMing = new kid ("xiaoMing"); xiaoMing.AddListener (New WashandsListener ()); xiaoMing.eat (); }}Résultat de sortie:
Pour plus de contenu lié à Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Tutoriel de structure de données Java et d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.