Nos padrões de arquitetura Model-view-controller (MVC), métodos do tipo ValidaCPF, VarificaE-mail…
devem ficar no Model ou no Controller? ‘-’
Tudo que seja relativo à regras de negócio deve ficar no modelo. O Controller serve apenas para ligar a View ao Modelo.
Certo…
é que li em um artigo o seguinte:
[quote]Controller
Processa e responde a eventos, geralmente ações do usuário, e pode invocar alterações no Model. É lá que é feita a validação dos dados e também é onde os valores postos pelos usuários são filtrados.
Fonte: http://pt.wikipedia.org/wiki/MVC
[/quote]
Alguns valores podem ser validados no model, como por exemplo o tipo do dado que vai ser inserido no banco. O próprio banco verifica isso, porém no caso do cpf que tem uma regra de validação totalmente diferente dos tipos padrão, isso é considerado uma validação de negócio e sua implementação deve ficar no controller responsavel pelo cpf.
aa sim ^^
certo entao… vlw manuw
Sabe eu tenho minhas dúvidas em relação a esse padrão. Vejo seu uso em alguns frameworks, e vou citar dois como exemplo (são os que mais uso atualmente): Vraptor3 e Rails (um full-framework).
No Vraptor faço as validações no meu @Resource onde geralmente uso o validator do framework. Encaro esse como se fosse o controller da minha arquitetura. Não faço a validação no meu model, que seriam minha entidades representando meu domínio.
Já no Rails, vejo as validações no Model. O controller é usado para receber as requisições e “conectar” o model com a view. Faço a validação no model, que é a representação do meu domínio.
Com isso, não sei se é certo dizer “o controller deve fazer a validação dos dados”, ou “o model deve fazer a validação dos dados”, pois acho que depende da arquitetura da aplicação. Não vejo sentido em validar dados em uma Entidade (model) da minha aplicação Java e também não vejo sentido validar dados no Controller da minha aplicação Rails.
Só lembra que MVC não é pacote não hein!
Tranquilo ^^
MODELO.
Bastante conteúdo sobre MVC poderá ser encontrado aqui!
Tanto teoria quanto implementação! E um pouco de Camadas, Pattern Observer, MVP e Exception’s.
Espero ter ajudado!