Dúvidas MVC

Pessoal,

Li os tópicos do fórum relacionados ao assunto mas ainda fiquei na dúvida…

Posso dizer que a seguinte implementação está correta segundo o MVC ?

Valeu,

Spiff

[code]
//
/
Classes de View /
/
/
// View inicial - Login
public class frmInicio implements CommandListener{
private string user ;
private string senha ;
private void commandAction(Command cmd) {
if (cmd == cmdLogin) { controlador.dispararEvento(EventosIds.EVENT_ID_LOGIN); } else { … }
}
}
// View que exibe uma lista de unidades para o usuario selecionar
// em qual deseja trabalhar
public class frmExibeUnd implements CommandListener{
private string user ;
private string senha ;
private string sUndSelecionada ;
private Vector vUserUnd ;

public void setUserUnd(Vector v) {
vUserUnd = v ;
}
private void commandAction(Command cmd) {
if (cmd == cmdOK) { controlador.dispararEvento(EventosIds.EVENT_ID_UNB_SELECIONADA); } else { … }
}
}
//
/
Fim Classes de View /
/
/

//
/
Controlador /
/
/
public class Controlador {
private frmInicio vwIni ;
private frmExibeUnd vwExbUnd ;
private Model localModel ;
public Controlador() {
vwInicio = frmInicio() ;
}
public void iniciar(Model m) {
this.localModel = m ;
exibirView (vwIni) ;
}
public void dispararEvento(int eventId) {
switch(e.eventId) {
case EventosIds.EVENT_ID_LOGIN: {
localModel.validarUsuario(vwIni.getUserName(), vwIni.getUserPwd()) ;
}
case EventosIds.EVENT_ID_LOGIN_OK: {
vwExbUnb = new ExbUnb() ;
vwExbUnb.setUser(model.getUserName()) ;
vwExbUnb.setUserUnd(model.getUserUnd()) ;
exibirView(vwExbUnb) ;
}
case EventosIds.EVENT_ID_LOGIN_FALHOU: {
exibirAlerta("Login Incorreto
Tente Novamente!") ;
}

}
}
public void exibirView(View v) { // Exibe um view na tela }
public void exibirAlerta(String s) { // Exibe um alerta para o usuario }
}
//
/
Fim Controlador /
/
/

//
/
Classes de Modelo /
/
/
// Modelo
public class Model() {
private Controlador control ;
public Model(Controlador c) { this.control = c ; }
public void validarUsuario(String suser, String spwd) {
/// verifica se login esta ok…
if (loginOk) {
control.dispararEvento(EventosIds.EVENT_ID_LOGIN_OK) ;
} else {
control.dispararEvento(EventosIds.EVENT_ID_LOGIN_FALHOU) ;
}
}
}
//
/
Fim Classes de Modelo /
/
/

//
/
Inicia a Aplicacao /
/
/
public class Aplicacao() {
private Controlador control ;
private Model modelo ;
public Aplicacao(
control = new Controlador() ;
modelo = new Model(control) ;
)
public static void main(String args[]) {
control.iniciar(modelo) ;
}
}
//
/
Fim Inicia a Aplicacao /
/
/
[/code][/code]

A classe Model que pode ser um bean (Cliente, Contrato, Produto etc) não deve ter nenhum contato com o controller e nem saber que ele existe. Simplesmente valide o usuário e retorne se é válido ou não. O mesmo acontece com o View

André,

Qual o problema de Model conhecer o Control ?

E o View ? Se o view não conhece o control como ele pode repassar os eventos ?

Outra dúvida… o model deve notificar as views que foi alterada obrigatoriamente ou o control pode ficar com esse controle ?

Andei pesquisando pela web e tenho visto que há muita controvérsia na implementação de MVC… Não existe bem um consenso sobre o assunto…

Valeu,

Spiff