[quote=pcalcado]Esquece repositório por enquanto, se mantêm no DAO apenas, você precisa entender um pouco melhor arquitetura de Camadas. O Façade que falei não recebe request ou qualquer coisa relacionada com HTTP/MVC/etc. Ele faz parte da Camada de Negócios (de Aplicação, na verdade, mas vamos simplificar) e precisa receber algo que faça sentido nessa Camada. Tente algo assim:
class AdicionaUsuarioAction{
public void execute(HttpRequest request){
Usuario novo = new Usuario(request.get('login'), request.get('senha'));
servicoUsuarios.adicionar(novo);
}
}
class ServicoUsuarios
public void adicionar(Usuario novoUsuario){
usuarioDao.adicionar(usuario);
}
}
Por que criar a Façade (ServicoUsuario)? A rigor você não precisa dela, a Action poderia chamar o DAO, mas ela quem controla o caso de uso. Digamos que você precise que um email seja enviado para o adminsitrador do sistema quando o usuário é criado, isso faz parte do caso de uso e pode ser adicionado à Façade. Outra coisa interessante é para controlar transações.
[/quote]
Philip, eu realmente estou com dificuldade em entender camadas, como neu inglês não é muito bom e não tem praticamente nenhum material em portugês, fica difícil comprrender certos conceitos, mas obrigado pelas dicas;
Então resumindo eu continuaria instanciando os objetos dentro da Action, como vc fez no metodo execute:
class UsuarioAction{
public void saveUser(HttpRequest request){ //InnerAction
Usuario novo = new Usuario(request.get('login'), request.get('senha'));
servicoUsuarios.adicionar(novo);
}
}
Agora na façade
class ServicoUsuarios
public void adicionar(Usuario novoUsuario){
usuarioDao.adicionar(usuario); //eu faria o try{catch } aqui????
}
}
Mais uma coisa, você disse que seria interessante controlar as transações na façade, mas no caso por exemplo eu tenho um filtro de controle de transações, então eu só usuaria façade se precisa de um controle a mais no meu Usário certo??
Então não tem problema nenhum a action acessar o DAO em algumas ocasiões como o CRUD simples??
Att