Pessoal qual a melhor forma de passar os dados da view pro controller no MVC em java? Eu posso instanciar uma classe de modelo na view para passar o objeto para o controller, ou isso quebra a arquitetura MVC?
1 curtida
Geralmente se usa o padrão Observer/Observable, este é um exemplo usando um comando:
// models
interface Comando {
void executar(Object resultado);
}
class Pessoa {
nome;
idade;
}
class PessoaDAO {
void salvar(pessoa);
}
// view
class TelaCadastro {
nomeTextField;
idadeTextField;
salvarButton;
comandoSalvar;
pessoaDAO; // setter e getter
construtor() {
salvarButton.addActionListener(acaoDoBotao());
}
String getNome() {
return nome.getText();
}
void setNome(nome) {
nomeTextField.setText(nome);
}
void salvar() {
pessoa = new Pessoa(getNome(), getIdade());
pessoaDAO.salvar(pessoa);
comandoSalvar.executar("Sucesso" ou "Falha");
}
}
// controle
class Controle {
pessoaDAO = new PessoaDAO();
telaCadastro = new TelaCadastro();
// atribui os modelos
telaCadastro.setPessoaDAO(pessoaDAO);
// navegação
telaCadastro.setComandoSalvar(
if "Sucesso" {
telaSucesso.setVisible(true);
telaCadastro.setVisible(false);
telaListaDePessoas.setVisible(true);
} if "Falha" {
telaErro.setVisible(true);
}
);
}
Acho que o MVC é somente a separação dos componentes e não tem relação entre a “comunicação” entre eles. A classe do modelo pode ser instanciada em qualquer lugar, mas os que são instanciados no controle geralmente são compartilhados em outras partes do sistema.