Entendendo o padrão MVC - Model - View - Controller


 
 
Neste artigo vou escrever mais uma vez do padrão de projeto MVC - Model-View-Controller e seus benefícios.

Vou tentar mostrar também que ele é diferente da arquitetura da separação de camadas (layers) usada para separar as responsabilidades em uma aplicação. Ou seja MVC não é a mesma coisa que separação de camadas.

O padrão MVC

O padrão MVC é um padrão de projeto popular usado em muitos softwares e foi documentando pela primeira vez em 1978 por Trygve Reenskaug relacionado a um projeto da Xerorx PARC no qual o padrão MVC foi implementando para uma biblioteca de classe do Smalltak-80.

O padrão MVC separa as responsabilidades de forma distintas atribuindo a cada um papel específico conforme mostra a figura a seguir:

  • O Controller - Despacha as Solicitações ao Model
  • A View - Observa o Model

 

O acionamento do usuário chega ao controller que possui inteligência para invocar o Model.

 

Geralmente isso ocorre na camada de apresentação (ou interface gráfica com o usuário).

Assim o padrão MVC é composto por 3 componentes (não quis usar o termo camada para não confundir com a arquitetura em camadas):

  1. O Model que representa os dados e não deve incluir detalhes de implementação podendo ter muitas Views associadas;
  2. A View que representa um componente de interface de usuário que esta vinculado a um Model. Ela pode exibir os dados e permitir que a modificação dos dados pelo usuário. A View deve sempre refletir o estado do Model.
  3. O Controller  que fornece um mecanismo para o usuário interagir com o sistema definindo como a interface do usuário vai reagir a ação do usuário. Ele é responsável por trocar e interpretar mensagens entre a View e o Model.

O padrão MVC também define regras de como esses componentes devem se comunicar:

  1. Padrões de comunicação permitidos
  • Os usuários podem interagir com uma View
  • Views podem interagir com Controllers
  • Controllers podem interagir com Views
  • Controllers podem se comunicar com outros Controllers
  • Controllers podem se comunicar com o Model
  1. Padrões de comunicação não permitidos
  • Os usuários não podem interagir diretamente com os Controllers
  • Os usuários não podem interagir diretamente com o Model
  • Views não podem interagir diretamente com outras Views
  • Views não podem interagir diretamente com o Model
  • Models não podem interagir com outros Models

Benefícios do padrão MVC

O primeiro benefício é que a View e o Model são desacoplados ou dissociados. Isso significa que você pode ter muitas Views associadas com um determinado modelo.

Por exemplo, com um modelo, você pode ter uma View diferente para cada operação CRUD (criar, ler, atualizar e excluir):

Na verdade, o Visual Studio foi construído com recursos que simplificam a criação de aplicações que seguem o padrão MVC.

Além das suas views padrão você pode querer criar views para dispositivos específicos ou criar views que retornam dados de uma planilha Excel.

A outra vantagem é a dissociação View-Controller que permite que você altere a forma como uma aplicação responde à entrada do usuário sem alterar o modo de exibição, permitindo também que a interface do usuário (a view) a seja alterada sem alterar a maneira como o aplicativo responde à entrada do usuário.

Em aplicações web, a interface do usuário provavelmente vai mudar mais frequentemente do que as regras de negócio. Ao manter a lógica do controlador separada da apresentação , você pode remodelar seus layouts de páginas sem inadvertidamente quebrar a sua lógica de negócios.

Outra vantagem de usar o padrão MVC é que a separação das responsabilidades permite que diferentes membros da equipe possam se concentrar em uma parte da aplicação que melhor se alinha com suas respectivas habilidades. Ele também permite que os membros da equipe trabalhem simultaneamente em suas respectivas partes da página, uma vez que o código e a apresentação estão em arquivos diferentes.

Para a equipe envolvida no desenvolvimento orientado a testes, o padrão MVC padrão presta-se bem para a criação de testes de unidade automatizados.

A ASP .NET MVC é um exemplo de implementação do padrão MVC mas existem outros exemplos como:

Concluindo, para destacar a diferença entre a arquitetura em camadas e o padrão MVC, vou repetir a citação de Phillip Calçado no artigo : http://www.fragmental.com.br/wiki/index.php/MVC_e_Camadas.html

Camadas dizem como agrupar os componentes e MVC diz como interagem os componentes.

João 3:26 E foram ter com João e disseram-lhe: Rabi, aquele que estava contigo além do Jordão, do qual tens dado testemunho, eis que está batizando, e todos vão ter com ele.

João 3:27 Respondeu João: O homem não pode receber coisa alguma, se não lhe for dada do céu.

João 3:28 Vós mesmos me sois testemunhas de que eu disse: Não sou o Cristo, mas sou enviado adiante dele.

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti