Domanda

Sto refactoring del codice per un incarico - attualmente la vista ha un sacco di pulsanti e menu e un ascoltatore azione che decide cosa fare utilizzando evento.getSource (). Da quello che ho letto la gente sembra pensare il suo meglio per ciascun componente GUI di avere il proprio action listener, forse creato attraverso una sorta di fabbrica. Tuttavia diverso da quello che ripulire il codice un po 'quali altri vantaggi vuol dare? - anche questo non vuol dire molto di più oggetti sarà sul mucchio e potrebbe influire sulle prestazioni

Grazie,

Aly

È stato utile?

Soluzione

Uso dei listener separati significa che non dovrebbe essere necessario per eseguire i test booleani per determinare che cosa dovrebbe essere fatto nel vostro ascoltatore. Questo ha due vantaggi

  • In primo luogo esso rende il codice eseguito un po 'più veloce.

  • In secondo luogo migliora la manutenibilità ed estendibilità del codice. Se è necessario aggiungere un nuovo componente, non è necessario modificare i metodi esistenti.

Se si cerca di avere un ascoltatore (spesso l'applet o l'applicazione oggetto stesso) fungono da listener per diversi componenti, allora si sta allentando l'invio di base che è centrale per chiamare i metodi, e implementa la spedizione a mano. Ciò richiede che una sorta di meccanismo di commutazione essere utilizzata per distinguere i vari componenti le cui eventi si gestisce. Il sistema è meglio attrezzata per fare questo di te. Questa struttura switch è sia soggetta ad errori e difficile da mantenere il programma cresce. Lasciare l'invio al sistema.

Fonte: Patterns per Java Eventi

Altri suggerimenti

E 'un compromesso. Codice con un mazzo di if sulla sorgente è considerato brutto, mentre masse di ascoltatori possono ingombrare la vostra memoria e avere un effetto negativo sulle prestazioni.

Data la scelta, di solito vado per quello che riduce al minimo la quantità di codice devo scrivere, come meno codice di solito significa meno opportunità per i bug.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top