Este artigo descreve o modo de ouvinte do Java Design Pattern. Compartilhe -o para sua referência, como segue:
O modo ouvinte possui três elementos - fonte de evento, objeto de evento e ouvinte.
Fonte do evento: Como o nome indica, a fonte do evento, como o botão clicada, pertence ao objeto que está sendo ouvido;
Objeto de evento: isso geralmente é confundido com a fonte do evento. É frequentemente usado para empacotar a fonte do evento. Lembre -se, afinal, é um evento, como clicar em eventos. A diferença entre a fonte do evento é diferente da fonte do evento. Não há como sentir isso;
Lista: Este é o núcleo do modo de ouvinte, que define as ações após o ocorrido um evento. Geralmente, o objeto de evento é inserido como um parâmetro como uma função definida no ouvinte.
Aqui está uma castanha simples:
O fundo da história é que Xiao Ming é uma criança não higiênica. Sua mãe está muito preocupada com sua saúde e estipula que suas mãos devem ser lavadas antes das refeições.
Defina uma criança travessa. Crianças travessidas são os objetos a serem monitorados, a fonte de eventos e todos os eventos são enviados pela fonte de eventos, o que parece ser um absurdo.
public class Child {private String Name; Lembretener Private Lembretener; public filho (nome da string) {this.name = name; } public void eat () {if (null! = lembrelistener) {lembrelistener.remind (new LembrewingHashHandSevent (this)); } System.out.println ("Criança Eat ..."); } public void addListener (ouvinte Lembretener) {lembrelistener = ouvinte; }}Em seguida, é olhar para o objeto de evento, que, como mencionado acima, envolve a fonte do evento. Aqui definimos um evento de lavagem das mãos antes da refeição.
classe pública LembretewashingHandsevent {criança privada criança; public LembreteWashingHandsevent (criança criança) {this.Child = Child; }} O objeto de evento define as propriedades e o status do evento.
Imediatamente após o evento ocorrer, as ações do ouvinte são lembradas para lavar as mãos.
public class Lembrelistener {public void lembrete (lembretHashingHandsevent LembreteWashingHandSevent) {System.out.println ("Ouça a mãe, lavando as mãos antes de comer ..."); }}Observe que o ouvinte encapsula principalmente as ações, só isso.
O código acima é apenas para ilustrar o princípio do modo ouvinte, e o código é simples e não muito elegante.
O seguinte herda ou implementa a biblioteca padrão Java e grava um par de código casualmente. É tarde da noite, e vou explicar se tiver tempo.
public class Kid {private String Name; Lista privada <Ilanter> literadores; public Kid (Nome da String) {this.name = Name; this.liteners = lists.newArrayList (); } public void Eat () {for (ouvinte ouvinte: Liteners) {if (Instância do ouvinte do washinghandslistener) {washinghandslistener washinghandslistener = (washinghandslistener) ouvinte; washinghandslistener.fireaftereventinvOked (New Washinghandsevent (isto, "Lavar suas mãos")); }} System.out.println ("Eat ..."); } public void addListener (ouvinte ouvinte) {Liteners.add (ouvinte); }} Evento de classe pública estende o EventObject { /*** Construa um evento de protótipo. * * @param fonte O objeto no qual o evento ocorreu inicialmente. * @THOWSOWS ILAGELARGUMENTEXCECTION Se a fonte for nula. */ Public Event (Object Source) {super (fonte); }} classe pública washinghandsevent estende o evento {private string eventName; /*** Construa um evento de protótipo. * * @param fonte O objeto no qual o evento ocorreu inicialmente. * @THOWSOWS ILAGELARGUMENTEXCECTION Se a fonte for nula. */ public washinghandsevent (fonte do objeto, string eventName) {super (fonte); this.EventName = EventName; } public String getEventName () {return EventName; } public void setEventName (string eventName) {this.eventName = eventName; }} interface pública O ouvinte estende Java.util.EventListener {public void FireAftereventInvOked (Evento Evento);} public class WashinghandSlistener implementa o ouvinte {@Override Public void FireAxTeEventInvOked (Event) {WashingHandsevent WashingHandSEvent = ((WashingHandsevent); System.out.println ("Preparação antes das refeições" + washinghandsevent.geteventName ()); }} public class Test {public static void main (string [] args) {Kid xiaoming = new Kid ("Xiaoming"); xiaoming.addlistener (New WashingHandslistener ()); xiaoming.eat (); }}Resultado da saída:
Para mais conteúdo relacionado ao Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo da operação Java Dom Node Tips", "Resumo de Dicas de Operação de Arquivos e Diretórios de Java" e "Resumo das dicas de operação do Java Cache"
Espero que este artigo seja útil para a programação Java de todos.