Entendendo o MVC (Model-View-Controller)

O que é MVC

MVC é a sigla referente as palavras em inglês Model, View and Controller. É basicamente um padrão de projeto que consiste na separação do código fonte do software em três camadas: Modelo, Visão e Controlador. Tais camadas serão explicadas logo abaixo.

A história do MVC

O padrão de projeto MVC é bastante antigo, ele foi descrito primeiramente pelo norueguês Trygve Mikkjel Heyerdahl Reenskaug em 1979, enquanto o mesmo desenvolvia o Smalltalk, uma linguagem Orientada a Objeto fracamente tipada. Esse padrão só começou a se tornar popular quando frameworks como Struts (Java) e Ruby on Rails (Ruby) o adotaram em suas estruturas. Daí então, frameworks como Zend framework (PHP) e CakePHP (PHP), entre outros, também basearam suas estruturas no MVC, transformando-o no que é visto por ai hoje.

As camadas

View

View ou Visão é a camada com o que o usuários interagem diretamente, ou seja, a interface. No caso de uma aplicação Web, a renderização do HTML final representaria grande parte dessa camada, já em uma aplicação desktop, ela seria representada pela interface como botões, textos, formulários e outros. Basicamente, a camada View é a reposta do processamento efetuado pelas outras camadas do software.

Model

Model ou Modelo é a camada responsável pela a manipulação dos dados propriamente ditos. As classes que representam as entidades, consultas à banco de dados, métodos de manipulação de dados, entre outros se enquadram nessa camada.

Controller

Controller ou Controlador é a camada responsável por efetuar a intermediação entre os modelos e a visualização, com base na requisição do usuário e/ou outros fatores, decidir qual Visão irá usar, fazendo o repasse de dados necessários à ela.

Para ter uma melhor idéia sobre isso, visualize o Diagrama de Sequência da Imagem 1 abaixo.

Imagem 1 - Diagrama de Sequencia MVC

Imagem 1 – Diagrama de Sequencia MVC

Por que usar MVC

O fato da divisão do código em três camadas define bem o que deve estar em cada lugar, isso faz com  que o código fique melhor organizado, mais limpo e claro, facilitando a manutenção, implementação de novas funcionalidades e melhorando o reaproveitamento de código.

Para melhorar o entendimento, veja um exemplo do uso de MVC em uma aplicação em PHP clicando aqui

2 comentários

  1. Seus posts são de grande contribuição para quem já trabalha com PHP e que se atualizar com padrões de projetos atuais
    Gostaria muito que você contribuísse com um post sobre a utilização do Zend Framework ou CodeIgniter

  2. Sou aluna de engenharia, e pago a matéria de Linguagem de Programação. Estou com muita dificuldade de entender o que são e quais diferenças de linguagem tipada e as não tipada…gostaria que , se possível, você pudesse me esclarecer pois existe poucas coisas na internet falando sobre elas

Deixe uma dúvida, resposta ou sugestão

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.