Opinião: J2SE separar camada de interface de regras de negócio

Pessoal,
Sempre programei Orientado a Objetos em outra linguagem e aprendi que deveríamos sempre separar a camada de interface com o usuário (Frames, Dialogs) da regra de negócio.
Gostaria de saber se esta técnica também é aplicada em Java, considerando J2SE.

Vou citar um exemplo:
Estou desenvolvendo uma aplicação StandAlone (J2SE) onde em uma opção do JFrame principal, o usuário necessitará digitar uma senha para ter acesso a algumas funcionalidades.
Para que o usuário digite a senha, precisarei mostrar um JDialog (dlgSenha), daí vem a pergunta:

1 - Posso ter uma classe chamada ValidarSenha que funciona assim:

  • Declaração do dlgSenha (JDialog dlgSenha = new JDialog)
  • Declaração dos JLabels, JPanels, JButtons utilizados no dlgSenha
  • Regras de negócio para validação

OU

2 - Posso ter uma classe chamada DlgSenha que instancia a classe ValidarSenha:
Classe DlgSenha

  • Declaração do dlgSenha (JDialog dlgSenha = new JDialog)
  • Declaração dos JLabels, JPanels, JButtons utilizados no dlgSenha
  • instancia ValidarSenha

Classe ValidarSenha:

  • Regras de negócio para validação

A questão é, qual das duas formas é a mais elegante se tratando de POO ?
A opção de número 2 é realmente utilizável ou eu estou “viajando na maionese” ?

Gostaria da opinião de vocês.

Beleza?

Cara como aparentemente a sua app é simples acho que um delegate resolvera bem o seu problema.
ai voce criara uma classe java normal com vários m´petodos chamando os métodos da sua classe de negócio, também conhecido como bridge(se não me engano).
Desta forma voce separa bem as camadas e também voce oculta do cliente (sua app swing) a tecnologia usada na camada de negócio(ejb ou spring)
Falou!

O que você acha de criar as seguintes classes:

Classe que representa o usuário que irá se logar:

class Usuario{
    String login;
    String senha;

    boolean validarSenha(){
        //Aqui vai o código para validar a senha do objeto usuário instanciado e retornar true ou false.
    }
}

Classe que representa a interface com o usuário

class ValidarSenha extends JDialog{
    Usuario usuario;

    JLabel lblUsuarioNome;
    JTextField txtUsuarioNome;

    JLabel lblUsuarioSenha;
    JPasswordField txtUsuarioSenha;

    //Código para montar a tela

    /*
        Listener adicionado no botão de ok/validar/entrar para :
        * Instanciar um objeto Usuario;
        * Preencher os atributos nome e senha;
        * Chamar o método, do objeto usuario, que valida o nome e a senha;
        * Fazer o que tem que ser feito quando a partir da informação se o usuário é válido ou não.
    */
}

ACho que isso resolve o seu problema. O que você acha? Gostou da solução? Concorda? Tem alguma resalva?

Sim, é isso mesmo.
Separando a interface visual da regra de negócio.