Dúvida sobre Padrões de Projeto

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! :wink: