Caros,
To refatorando um projeto meu, na verdade estou o refazendo todo, e estou tentando separar algumas coisas ao máximo.
Cada tela do programa (desktop) tem um controler associado, e este trabalha com uma interface para a tela, e não diretamente com ela. Isso me ajuda a escolher qualquer implementação da tela (seja Swing, SWT, Thinlet ou papel toalha).
Então para exibir uma tela eu faço algo assim:
WorkAreaController w = new WorkAreaController();
w.setParentController( this );
w.getGUI().setParentComponent( podeSerUmJPanel ); //recebe object
w.init();
Em setParentController() eu falo pro controller da tela que abrí, qual o controller que o chamou.
getGUI() me retorna um referência para a tela controlada pelo novo controler e no seu método setParentComponent() eu passo o container (objeto visual) no qual a nova tela será posicionada (caso necessário).
E com init() eu mando o novo controller assumir e exibir a tela.
Preciso de opiniões sinceras sobre esta escolha, se está adequada, complicada ou qualquer outra coisa.
Abraços
Daniel Destro