Dúvidas MVC

2 respostas
Spiff

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

/********************************************************************************/
/**  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]

2 Respostas

E

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

Spiff

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

Criado 25 de junho de 2004
Ultima resposta 26 de jun. de 2004
Respostas 2
Participantes 2