Modelo de tratamento de eventos em aplicação com Swing

Olá pessoal. Alguém tem algum pattern ou exemplo para trabalhar com o tratamento de eventos de interface Swing ? Como fazer para fugir do:

addActionListener(new ActionListener({...)

ou do if gigante:

if (e.getActionCommand().equals("novoCliente") ){
.....
} else if (e.getActionCommand().equals("sairDoSistema")) {
...

Valeu !

Cara eu fazia muita interface em swing e nunca encontrei um pattern para tal, oque facilitou minha vida foi seguir um padrão MVC desenvolvido por mim, eu nunca cheguei a documentar muito afundo ele mas tenho uma breve descrição de como desenvolver programinhas em Swing MVC com formularios.
Abaixo colocarei o texto de algo que escrevi rapidamente, nao eh nenhum artigo mas talvez ajude, vale a pena tentar…

Oque fazer quando para começar um sistema?
1) Definição de um projeto
[list]- fazer um diagrama de caso de uso definido bem oque seu sistema fará

  • escolher deterrminados casos de uso e fazer diagramas de atividade na qual será descrito passo a passo a iteração de usuario e sistema.
    - Porque escolher apenas alguns casos de uso?
    porque uma das maneira mais eficiente para desenvolver um programa é a abordagem incremental na qual seu sistema vai sendo construido aos pouco e estavel.
    • depois do diagrama de atividades faça agora o diagrama de colaboração na qual definira os objetos que estarão vinculados ao caso de uso que esta sendo desenvolvido.

    • logo apos faça o diagrama de sequencia que lhe proporcionara o esqueleto e fluxo dos metodos e objetos de suas classes, talvez apareça novas classes auxiliares para criar.
      [/list]
      2) Implementação
      definido os casos de uso a serem implementados, apartir do diagrama de sequencia comece aimplementar o recheio do seus metodos na seguinte sequencia.
      [list]
      -ClassDAO(Modelo)[list:bfd903f239]

      • preocupe-se aqui apenas em definir como salvar recuperar e pesquisar seus objetos
      • não preocupe-se em verificar consistencias de interface tipo(‘se nome é nulo’) este tipo de consistencias devem ser feitas ou na interface ou nas ClassesManagers.
        [/list]
        -ClassManager(Controle)[list]
      • nessa classe preocupe-se em fazer toda as verificações logicas de sistema, tipo (‘se valorSaque é 0 informe(exception)’)
      • deixe as consistencias de valores invalidos do tipo null ou vazio para as classes deActions na qual trabalham com os componentes de interface
        [/list]
        -ClassGUI(Visualização)[list]
        -Aqui você define todos os componenetes de visualização, os passos para definição são apenas:
        -Criar o coponente
        -definir onde ele ficara na tela
        -definir os metodos de acesso para esse componente ex: getBtCadastrar()
        [/list]
        -ClasseActions(Visualização controle nivel 0)[list]
        Cada formulario de seu programa pode possuir uma classe Action na qual ficara resposavel por manipular os componentes daquele formulario.
        Para fazer um action contendo formularios com multiplos campos de prenchimento,por exemplo: um cadastro de pessoa, são necessarios no minimo 3 metodos essenciais, são eles:[list:bfd903f239]
        -Metodo que fara toda consistencia de interface com seus determinados componetes exemplo: datas, numeros etc…
        boolean validateData();
        -Metodo na qual retorna todos os dados do formulario
        ObjectValue getData();
        -Metodo necessario para edição dos dados, na qual seta os dados
        void setData();
        -Metodo que limpará todos os campos quando necessario
        vois cleanData();

      Normalmente para executar determinadas funcionalidades com o formulario ha uma sequencia basica para cadastro e edição/atualização exemplo:
      CADASTRO:
      validateData();
      getData();
      cleanData();

        EDIÇÂO/ATUALIZAÇÂO:
        	setData();
        	validateData();
        	getData();
        	cleanData();	
        			[/list]
      

      [/list:u:bfd903f239]
      -ClassConfig

      • contem toda as configurações da aplicação, normamente salva em um XML.
        -ClassApp
        -classe main inicia o programa e executa funções globais da aplicação ex: sair do sistema e salvar contexto.
        [/list:u:bfd903f239]
        3) Teste

4) Validação

5) Implantação

6) volte ao passo 1.2

Acho que talvez nao o ajude muito mas para mim seguir um padrão meu ou um outro qualquer facilitou muito o desenvolvimento de novas aplicações.