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” ?
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!
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?