Maneira eficiente para trabalhar com eventos?

Gostaria de saber qual a maneira mais eficiente para se trabalhar com eventos:
Classes internas,
Eventos anônimos?

exemplo atualmente eu estava usando anônimos, agora fiz com uma classe internas depois tive que por muitos if, mas não sei se é a melhor maneira , ou se existe algum melhor?

Obrigado desde já.

Cara… Tô usando classe interna… Tem realmente muitos if, mas não tenho problema. Eu os organizo, por exemplo:
// ---------------------------- CADASTRO
if (e.getSource() == btFuncao) { /* método de outra classe */ }

// ---------------------------- RELATORIOS

e por aí vai. Separo em sessoes os meus if, então ficam organizados. Claro que fica com muitos, mas tem problema não. kk

entendi, mas por exemplo eventos simples de um campo de texto, único evento que uso é passar foco para outro campo, vc faz na classe interna?

Na minha opinião, vc deve usar o que for mais confortável para vc, eu faria por classes externas.
Mas vc pode criar classes especializadas para tratamento de eventos, algo assim:

public class TratadorDeEventos {
    HashMap<Object, Comando> mapaDeComandos = new HashMap<>();
    public void executarEvento(Event e) {
        Comando c = mapaDeComandos.get(e.getSource());
        c.executar(e);
    }
    void putComando(Object o, Comando c);
}

Sim.
Eu faço os eventos sempre internamente… Não coloco em classe separada… Mas acho que isso vai de cada um… rs Faço assim porque eu sei quais eventos vão ter ali. Exemplo: uma classe Tela_CadastroPessoa vai ter um botão de inserir registro no meu banco. Esse evento eu coloco na própria classe Tela_CadastroPessoa e mantenho isso como padrão para as outras classes que eu tiver no meu package. Sempre assim:
Classe 1 com seus métodos e eventos, JInternalFrame, etc
Classe 2 com querys referentes à Classe 1