sexta-feira, abril 06, 2007

O padrão MVC: Model-View-Controller


O padrão MVC é um padrão de arquitetura de aplicação cujo objetivo é promover uma maior independência entre os componentes do projeto.

É muito comum em grandes projetos a existência de complexas regras de negócios e projetos de interfaces rebuscados, e a redução do acoplamento entre os componentes é bastante importante para se atingir maior reusabilidade e mais facilidade de manuntenção sem comprometer todo o sistema. O padrão MVC entra como uma solução, por sinal muito usada em aplicações web, para a construção de sistemas cada vez mais coesos e menos acoplados.

A sigla MVC refere-se às três camadas do padrão, cada uma responsável por funções muito bem definidas. Vamos tratar de cada uma delas mais detalhadamente:


Model: É a camada que contém a lógica da aplicação. É responsável por conter as regras de negócios e, para sistemas persistentes, todo o controle de acesso e tratamento de dados vindos do banco. Recebe as requisições e geram respostas a partir do que foi pedido. Vamos imaginar um sisteminha de blog. Quando queremos cadastrar ou ver algum post, o Model recebe esta requisição, acessa o banco (ou qualquer outra fonte de dados), faz as operações necessárias e retorna a resposta para alguém que saberá tratar. A função dele termina por aí.

View: É a camada de apresentação ao usuário. É a interface que proporcionará a entrada de dados e a visualização das respostas geradas. Em aplicações web é representado pelo HTML que é processado e mostrado pelo navegador. Geralmente contém formulários de entrada de dados e tabelas, grids, etc. para mostrar as respostas. Essa camada não contém lógicas de negócios, portanto todo o processamento é feito pela Model e então a resposta é repassada para o View. No caso do nosso sisteminha de blog, o View representaria a tela de entrada de uma nova postagem ou uma página listando todos os posts feitos recentemente.

Controller: Já falamos de quem recebe as requisições e de quem as manda. Mas temos que concordar que tudo isso viraria uma grande bagunça se não houvesse alguém para organizar tudo isso. Essa é a função do controller. Essa camada funciona como um intermediário entre a camada de apresentação e a camada de negócios. É função do controller (como o própio nome já diz) coodenar o envio e o recebimento de requisições entre o Model e o View.

Existem muitos frameworks MVC para as mais diferentes liguagens como o Struts (Java) e o Symfony ou CakePHP (PHP), e muitos outros. Cabe ao desenvolvedor analisar as suas necessidades e ponderar sobre o uso ou não desse padrão.

Um comentário:

Lucas disse...

Muito bom o post!

Porém faltou as referências, da onde você retirou essa imagem e tal...

[]s