DEV Community

Elisangela Silva
Elisangela Silva

Posted on

PRINCIPAIS CONCEITOS DO PADRÃO MVC (MODEL-VIEW-CONTROLLER)

Existem diversos padrões de arquitetura de software (design pattern) que podem ser aplicados para organizar o código de uma aplicação, e talvez o mais acessível deles seja o padrão MVC. Este padrão cria uma separação da implementação do software em camadas entre os dados da aplicação (model) e sua apresentação (view). Ações do usuário são interceptadas por um controller responsável em atualizar o modelo e refletir seu estado mais atual através de sua respectiva view. Essa divisão em camadas torna mais fácil e define melhor as responsabilidades e proporciona uma independência.

É altamente testável, pois quando se tem as camadas divididas onde cada parte está em seu devido lugar e o desenvolvedor consegue testar cada parte de forma separada, favorecendo o Desenvolvimento Dirigido por Testes (TDD).

Alt Text

O que significa cada sigla do MVC (MODEL-VIEW-CONTROLLER)
O model seria o coração da aplicação, onde se tem a regra de negócio, entidades, aplicação do banco de dados, e tudo que pertença a aplicação em termo de regra de negócio e validação.

A view onde temos a interface de comunicação com o usuário é responsável por renderizar a resposta da requisição seja ela em desktop ou web.

A camada controller faz o controle do fluxo da aplicação, fazendo o intermédio de todo o fluxo a definir o que o usuário verá na tela. É a primeira camada que recebe requisição dentro do padrão MVC.

Alt Text

Quando é necessário acessar o banco de dados para obter resposta.
Fluxo com dados:

Alt Text

Como funciona?
O usuário em seu browser realiza uma requisição HTPP, que ao chegar ao controller que verifica e comunica ao model. O model realiza uma consulta ao banco de dados, retornando os dados requisitados para o mode, vale lembrar que essa parte do model é invisível ao usuário. O model retorna ao controller que tem o trabalho de renderizar a informação na view. A view retornará um evento para o controller que devolverá a resposta HTPP para o browser onde o usuário poderá visualizar o que foi requerido.

Caso não seja necessário acessar dados, a requisição não precisa passar pela camada model, pois a camada model que se liga ao banco de dados.
Fluxo sem dados:

Alt Text

Implementação
Isso depende da linguagem de programação que será utilizada e do contexto da aplicação. Normalmente haverá uma classe abstrata para cada um dos 3 elementos principais: Model, View e Controller. O programador desenvolve aplicações criando subclasses dessas classes abstratas onde cada aspecto do sistema vai ter seu model. Cada modelo terá 1 ou mais controladores e visões.

Sugestão de leitura:
Use a Cabeça! Padrões de Projetos (livro).

Top comments (0)