Este artículo describe el modo del oyente del patrón de diseño Java. Compártelo para su referencia, como sigue:
El modo del oyente tiene tres elementos: fuente de eventos, objeto de evento y oyente.
Fuente del evento: Como su nombre lo indica, la fuente del evento, como el botón haciendo clic, pertenece al objeto que se escucha;
Objeto del evento: Esto a menudo se confunde con la fuente del evento. A menudo se usa para empaquetar la fuente del evento. Recuerde, después de todo, es un evento, como hacer clic en eventos. La diferencia entre la fuente del evento es diferente de la fuente del evento. No hay forma de sentirlo;
Oyente: este es el núcleo del modo del oyente, que define las acciones después de que ocurre un evento. Por lo general, el objeto de evento se ingresa como un parámetro como una función definida en el oyente.
Aquí hay una castaña simple:
La historia de la historia es que Xiao Ming es un niño antihigiénico. Su madre está muy preocupada por su salud y estipula que sus manos deben lavarse antes de las comidas.
Defina a un niño travieso. Los niños traviesos son los objetos que deben ser monitoreados, la fuente de eventos, y todos los eventos son enviados por la fuente de eventos, que parece no ser sin sentido.
Niño de clase pública {nombre de cadena privada; Private RemindListener RemindListener; Public Child (nombre de cadena) {this.name = name; } public void eat () {if (null! = RemindListener) {RemindListener.remind (New RemindwashingHandsevent (this)); } System.out.println ("Child Eat ..."); } public void addListener (RemindListener Listener) {RemindListener = LISTEER; }}Lo siguiente es mirar el objeto del evento, que, como se mencionó anteriormente, envuelve la fuente del evento. Aquí definimos un evento de lavado de manos previo a la comida.
Clase pública Recordación de WashingHandsevent {niño privado niño; Public recordingwashinghandsevent (niño niño) {this.child = child; }} El objeto de evento define las propiedades y el estado del evento.
Inmediatamente después de que ocurra el evento, se recuerda a las acciones del oyente que se tomen las manos.
Public Class RemindListener {public void Remind (RemindwashingHandsevent RecordingwashingHandsevent) {System.out.println ("Escucha a mamá, lavar las manos antes de comer ..."); }}Tenga en cuenta que el oyente encapsula principalmente acciones, eso es todo.
El código anterior es solo para ilustrar el principio del modo del oyente, y el código es simple y no muy elegante.
El siguiente hereda o implementa la biblioteca estándar Java e escribe un par de código casualmente. Es tarde en la noche, y lo explicaré si tengo tiempo.
Kid de clase pública {nombre de cadena privada; Lista privada <Oyeer> Liteners; Public Kid (nombre de cadena) {this.name = name; this.litener = lists.newarrayList (); } public void eat () {para (oyente oyente: liteners) {if (instancia del oyente de WashinghandSlistener) {WashingHandsListener WashingHandsListener = (WashingHandsListener) oyente; lavandería de lavado. }} System.out.println ("comer ..."); } public void addListener (oyente oyente) {litener.add (oyente); }} El evento de clase pública extiende EventObject { /*** construye un evento prototipo. * * @param Fuente El objeto en el que ocurrió inicialmente el evento. * @throws ilegalargumentException si la fuente es nula. */ evento público (fuente de objeto) {super (fuente); }} clase pública Washinghandsevent extiende el evento {String private String EventName; /*** Construye un evento prototipo. * * @param Fuente El objeto en el que ocurrió inicialmente el evento. * @throws ilegalargumentException si la fuente es nula. */ public WashingHandsevent (fuente de objeto, String EventName) {super (fuente); this.eventName = EventName; } public String getEventName () {return EventName; } public void setEventName (String EventName) {this.eventName = EventName; }} El oyente de la interfaz pública extiende java.util.eventListener {public void fir afterEventInVoked (evento de evento);} clase pública WashinghandSlistener implementa el oyente {@Override Public Void FirEACTTEREVENTINVOKED (Event Event) {Washinghandsevent Washinghandsevent = (lavado de lavado) Event; System.out.println ("Preparación antes de las comidas" + Washinghandsevent.GetEventName ()); }} prueba de clase pública {public static void main (string [] args) {kid xiaoming = new kid ("xiaoming"); Xiaoming.AddListener (New WashingHandsListener ()); xiaoming.eat (); }}Resultado de salida:
Para obtener más contenido relacionado con Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos de Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación Java DOM", "Resumen de los archivos Java y consejos de operación de directorio" y "Summary of Java Cache Operation Tips" ".
Espero que este artículo sea útil para la programación Java de todos.