usar EventObject.getSource em actionListener
-
13-09-2019 - |
Pergunta
Estou refatoração algum código para uma atribuição - atualmente o ponto de vista tem muitos botões e menus e um ouvinte de ação que decide o que fazer usando event.getSource (). Pelo que tenho lido pessoas parecem pensar que é melhor para cada componente GUI para ter seu próprio ouvinte de ação, talvez criado por algum tipo de fábrica. No entanto diferente do que limpar o código um pouco que outros benefícios que isso dá? - também isto não significar muito mais objetos estarão na pilha e pode afetar o desempenho
Obrigado,
Aly
Solução
Usando ouvintes meios separados que você não deve precisar de realizar testes booleanos para determinar o que deve ser feito em seu ouvinte. Isto tem dois benefícios
-
Primeiro torna o código correr um pouco mais rápido.
-
Segundo ele melhora manutenção e extensibilidade do seu código. Se você precisar adicionar um novo componente, você não precisa modificar os métodos existentes.
Se você tentar ter um ouvinte (muitas vezes o applet ou o próprio objeto do aplicativo) atuam como ouvinte por vários componentes, então você está desfazendo o envio básico que é central para chamar métodos, e estão a implementar expedição à mão. Isto requer que algum tipo de mecanismo interruptor ser usado para distinguir os vários componentes cujos eventos você está lidando. O sistema está melhor equipado para fazer isso do que você é. Esta estrutura switch é tanto sujeito a erros e difícil de manter como o programa cresce. Deixar o envio para o sistema.
Fonte: Padrões para Java Eventos
Outras dicas
É uma troca. Código com um monte de if
na fonte é considerado feio, enquanto massas de ouvintes podem atravancar a sua memória e ter um efeito negativo no desempenho.
Dada a escolha, eu costumo ir para o que minimiza a quantidade de código que eu tenho que escrever, como código menos geralmente significa menos oportunidades para erros.