Estou fazendo um aplicativo e tentando deixar no padrao MVC. Ele tem basicamente 1 jframe e vários jinternalframes. Agora as dúvidas:
1 - Eu estou usando mais de uma classe de controle, está certo isso? Tipo uma classe de controle pra funcionario e uma classe de controle para produtos.
2- Minha classe Main extends JFrame e faz tudo ali, devo criar uma classe de controle pra separar a visão ? Ela não faz nenhuma operação, só tem os menus pra abrir as JInternalframes, ficaria meio confuso pois eu teria aa clase de visao da JFrame Main ligada a uma classe de controle que chamaria uma JInternalFrame que abriria outra classe de controle pra ai sim utilizar o modelo. Ficaria algo como visao - controle - visao - controle -modelo, meio estranho.
3- Como disse antes, eu tenho minha classe Main que extends JFrame (que ta fora do padrao MVC eu acho) e ai de acordo com a escolha no menu eu crio a classe de controle certa e a jinternalframe que eu preciso, assim:
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
TAlteraRemoveFuncionario tAlteraRemoveFuncionario = new TAlteraRemoveFuncionario();
FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
ControleFuncionarios contrlFuncionario= new ControleFuncionarios(tAlteraRemoveFuncionario,funcionarioDAO);
jDesktopPane.add(tAlteraRemoveFuncionario);
try {
tAlteraRemoveFuncionario.setSelected(true);
} catch (PropertyVetoException e1) {}
}
}); Só que eu tenho um JinternalFrame de login, caso o login esteja correto algumas opções de menu são habilitadas. Qual é a melhor forma de fazer isso? mandar uma referencia de Main pra controladora e caso o login esteja correto habilitar os menus lá mesmo na classe de controle ??
Eu aplicaria o MVC em uma aplicacao Swing da seguinte forma:
View:
public class JIFCadastroPessoa extends JInternalFrame{
// Tela cheia de campos
// com botoes pra alterar / salvar / excluir
btnSave.addActionListener( new PessoaSaveAction() );
//e assim para os outros botoes..
}
Controllers:
public class PessoaSaveAction implements ActionListener{
// checa os campos vazio e etc regra do save..
// passou pelas checagens
new PessoaModel().save( PessoaPOJO );
}
public class PessoaUpdateAction implements ActionListener{
// checa os campos vazio e etc regra do update..
// passou pelas checagens
new PessoaModel().update( PessoaPOJO );
}
public class PessoaDeleteAction implements ActionListener{
// checa os campos vazio e etc regra do delete..
// passou pelas checagens
new PessoaModel().delete( PessoaPOJO );
}
public class PessoaFindAction implements ActionListener{
// checa os campos vazio e etc regra do find..
// passou pelas checagens
new PessoaModel().find( PessoaPOJO );
}
Model:
public class PessoaModel{
// aqui pode ter regras pra persistencia
// aqui eh invocado o DAO pra persistir
new PessoaDAO().save( PessoaPOJO );
}
DAO:
public class PessoaDAO{
// Implementacao dos metodos
// save / update / delete / find
public void save(){
//TODO - insert into pessoa (nome,idade) values (?,?);
}
}
POJO:
public class PessoaPOJO{
// get / set dos campos
// nome e idade por ex.
}
Acho que essa estrutura é legal…
Valeu? Até… :thumbup:
[s]