2011-01-18 13 views
72

In termini generali di java, ci sono gli ascoltatori & gestori di eventi.
Voglio dire che li uso inconsapevolmente, solo quale sia disponibile nell'API.Qual è la differenza tra ascoltatori e gestori di eventi in Java?

La mia domanda è, in quale caso utilizziamo gli ascoltatori e in quale caso utilizziamo i gestori per gli eventi?

Qual è la differenza tra loro? Caratteristiche ??

Ho cercato ragioni e non ho trovato una spiegazione corretta per Java.

+0

Questo post ha un bel riassunto. http://lemnik.wordpress.com/2009/03/04/gwts-new-event-model-handlers-in-gwt-16/ – kevinarpe

risposta

50

Non c'è una differenza formalmente definita tra ascoltatori e gestori. Alcune persone probabilmente sosterrebbero che sono intercambiabili. Per me, tuttavia, hanno un significato leggermente diverso.

Un listener è un oggetto che sottoscrive eventi da un'origine. Cf. lo observer pattern. Di solito puoi avere molti ascoltatori che si iscrivono per ogni tipo di evento, e sono aggiunti tramite i metodi addXyzListener.

Esempio:MouseListener nell'API Java.

Un gestore è un oggetto responsabile della gestione di determinati eventi. Uno scenario tipico sarebbe quello di fornire un gestore per un evento/attività specifico come argomento a un costruttore, oppure impostare il gestore tramite un metodo setXyzHandler. In altre parole, di solito è il un gestore per ogni tipo di evento.

Esempio:MemoryHandler nell'API Java.

+0

Ciao grazie per la risposta. cosa intendi con "iscriviti per eventi"?cosa intendi per "ascoltatori"? – BKSpurgeon

+0

@BKSpurgeon, vedere l'articolo di Wikipedia su Pattern osservatore collegato nella risposta. – aioobe

2

Sono concettualmente la stessa cosa: un oggetto che esegue un'azione in risposta a un evento dell'interfaccia utente. Generalmente, in Swing, questi oggetti sono chiamati "gestori" a livello di look-and-feel (per gestire eventi di widget di basso livello) e "ascoltatori" al livello di interfaccia utente più astratto (dove implementerai la logica dell'applicazione).

-1

È semantica.

  • Il listener è l'interfaccia.
  • L'adapter è una classe che implementa un'interfaccia specifica e fornisce un'implementazione vuota per i suoi metodi. Questo aiuta se non è necessario implementare tutti i metodi di interfaccia.
  • Il gestore implementa diverse interfacce o delega le chiamate a più interfacce.
+1

Non direi che un ascoltatore è necessariamente un'interfaccia. Il [BasicButtonListener] (http://download.oracle.com/javase/6/docs/api/javax/swing/plaf/basic/BasicButtonListener.html) per esempio è una classe concreta. – aioobe

20

Questo è il mio modo di vedere:

Un ascoltatore orologi per un evento a essere licenziati. Ad esempio, un KeyListener attende KeyEvents, un MessageListener attende che i messaggi arrivino su una coda e così via.

Il gestore è responsabile della gestione dell'evento. Normalmente, ascoltatori e gestori vanno di pari passo.Ad esempio, KeyListener dice a ExitHandler che "la lettera Q è stata premuta" e il gestore esegue la logica come la pulizia delle risorse e l'uscita dall'applicazione con garbo. Similmente un ButtonClickListener avrebbe detto allo stesso ExitHandler che è stato fatto clic sul pulsante "Esci". Quindi, in questo caso hai due eventi diversi, due ascoltatori diversi ma un solo gestore.

4

Un listener, ascolta gli eventi che sono oggetti valore dati che descrivono un evento. Quando si è verificato l'evento e l'ordine degli eventi è spesso importante. Premendo il tasto '0' seguito da '1' è diverso da '1' e '0'.

Un gestore gestisce un oggetto complesso, ad es. una nuova connessione Socket. Il gestore può elaborare l'oggetto per un periodo di tempo qualsiasi. Il momento della creazione e dell'ordine dell'oggetto non è così importante. Una connessione da client0 o client1 può avvenire in qualsiasi ordine.

30

La differenza più fondamentale è l'associazione

  • Listener è associato con Origine evento (Es: bordo chiave)
  • Handler è associato ad un evento (Es: keydown)

In generale, ci sarà un solo Gestore di gestori centrale che gestisce tutti gli eventi, mentre nel caso di Listener ogni Entità che vuole ascoltare, avrà e per gestire la propria Raccolta di ascoltatori

+0

Il mouse è l'origine dell'evento, se si guarda l'analogia MouseListener è associato alla sorgente dell'evento whcih è Mouse – Swapnil

3

Un listener è un oggetto che viene avvisato quando si verifica un evento e ha 2 requisiti principali- 1-deve essere stato registrato con una o più fonti per ricevere notifiche su specifici tipi di evento 2: deve implementare metodi per ricevere ed elaborare queste notifiche. Il gestore è responsabile della gestione degli eventi.

2

Penso che la differenza sia sottile perché un Listener concreto è anche un gestore di eventi o almeno un metodo che può essere considerato un gestore di eventi. Cioè, un Listener concreto gestisce o gestisce la reazione all'evento dopo aver ricevuto un oggetto evento (dalla sorgente evento) con tutte le informazioni utili sull'evento appena accaduto (sulla sorgente evento). Poiché questo listener deve implementare un'interfaccia xxxListener che gli impone di implementare almeno un metodo a sua volta eseguito dall'oggetto source-source quando si verifica l'evento, in modo che lo stesso Listener possa essere considerato un gestore e più precisamente, il metodo dell'interfaccia Listener implementata dall'oggetto Listener può essere considerata il vero gestore di eventi. Quindi vedo il gestore di eventi come solo il codice che viene eseguito in risposta a un evento. Questo è diverso da un oggetto Listener che è un elemento di un concetto più astratto come un pattern di progettazione Observer. Questa è la mia opinione personale sull'argomento.

3

A mio parere, la differenza più importante è che utilizziamo gli ascoltatori per la fonte dell'evento, diversamente dal gestore, che è per tipo di evento.

0

EventHandler viene introdotto in JavaFX per tutti i controlli dell'interfaccia utente. Mentre l'ascoltatore è preso in prestito per gli osservabili, come le proprietà.

EventHandler è un modo per distinguere gli eventi osservabili e gli eventi ui.

Problemi correlati