In MVC the View serves to handle the entire user interface, the Model serves to contain the classes that represent the system and its business rules and < Controller performs the communication between View and Model (something like controlling the flow of data), following this line of reasoning I can conclude that both View and Model do not talk to each other. >
Here is a short example in Java for contextualizing:
ViewerPass Class:
public class ViewPessoaCadastro extends JFrame {
public ViewPessoaCadastro() {
initComponents();
}
private void Salvar(ActionEvent evt) {//Clique
//Salvar os dados.
}
private void Listar(ActionEvent evt) {//Clique
//Obtem todas as pessoas cadastradas e exibi para o usuario.
}
}
Class ControllerPersonal:
public class ControllerPessoa {
Pessoa pessoa;
public ControllerPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public void salvar() {
pessoa.salvar();
}
public void alterar() {
pessoa.alterar();
}
public List<Pessoa> listarTodas() {
List<Pessoa> pessoas = pessoa.listarTodas();
return pessoas;
}
public List<String> obterErrosValidacao() {
List<String> errosValidacao = pessoa.validar();
return errosValidacao;
}
}
Class Person:
public class Pessoa {
private String nome;
private int idade;
public Pessoa() { }
public Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
public void salvar() {
//Rotina para salvar no banco de dados.
}
public void alterar() {
//Rotina para registrar a alteração dos dados no banco de dados.
}
public List<Pessoa> listarTodas() {
//Rotina para listar todas as pessoas salvar no banco de dados.
...
}
public List<String> validar() {
//Rotina para validar a classe pessoa (Regras de negocio).
...
}
/*Getters e Setters*/
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
public int getIdade() { return idade; }
public void setIdade(int idade) { this.idade = idade; }
}
Questions
Considering the above example in Java I had the following doubt:
When I fill in the attributes of class Pessoa
, I do this in the view by creating an object of type Pessoa
and then I pass it in the constructor of class ControllerPessoa
or I create a method in class ControllerPessoa
that contains all the parameters that represent the attributes of class Pessoa
? Considering the above question is there any possibility of View chatting directly with the Model?
PS: Can give examples in other languages as well, but could preferably be Java itself.