MVC

Paulo Cunha
4 min readJun 13, 2021

--

O mais usado Padrão de Arquitetura de Software

MVC é um Padrão de Arquitetura de Software, ou seja, ele descreve padrões de uma estrutura de software que já foi usada, testada e serviu como solução para problemas recorrentes.

A sigla MVC significa Model-View-Controller e é um padrão de arquitetura baseado em interface, e é exatamente por isso que ele é o padrão de desenvolvimento mais utilizado no mundo hoje. A grande maioria das aplicações são desenvolvidas baseadas em interface.

Mas não é só por isso. Os frameworks mais famosos e mais utilizados, adotam o MVC como padrão, quase que obrigatório, de arquitetura. A maioria dos desenvolvedores iniciantes só conhecem o MVC como padrão arquitetural.

Quais os princípios do MVC?

O MVC surgiu na década de 1980 e foi criado por Trygve Reenskaug para um projeto de Graphic User Interface (GUI) no Centro de Pesquisa de Palo Alto da Xerox. Ou seja, é um padrão de desenvolvimento direcionado para apps baseados em interface.

Ele visa separar uma aplicação em camadas diferentes com objetivos específicos.

Model é a camada de modelo da aplicação, que gerencia o comportamento dos dados através das regras de negócio. Esta camada é responsável pelo acesso para os dados serem coletados, gravados e exibidos.

A model, geralmente, fica à frente do ORM ou gerenciador de banco de dados, e quaisquer dados que precisem ir ou vir do banco de dados, passam pela camada de modelo para tratamento e validação.

Aqui vale uma observação importante. É muito comum se deparar com aplicações que espalham suas regras de negócio por outras camadas, deixando tratamentos de dados e regras de negócio na camada de controller ou até mesmo da view. Isso fere completamente o principal princípio do MVC que é separar as responsabilidades da aplicação em camadas. Por tanto, ao estruturar uma aplicação MVC, concentre suas regras de negócio na camada de modelo, ou utilize Repositórios para isso.

View é a camada de apresentação ou visão da aplicação. Esta camada é responsável por transformar os dados tratados pela camada de modelo em informação visível e entendível para o usuário.

Imagine uma aplicação com centenas, ou milhares de informações sobre o clima de uma determinada região ao longo do tempo. Esses dados podem ser transformados em um gráfico pela camada de view para serem apresentados ao usuário de forma que ele entenda como a temperatura se comporta naquele local, por exemplo.

Controller é a camada de controle da aplicação e fica responsável por identificar e responder aos comandos do usuário. O Controller recebe os comando e os envia para a camada de Model e para a camada de View. Em ações onde dados precisam transitar (a partir) do banco de dados, a Model registra/captura as informações e as devolve diretamente para a View que processa esses dados e os transforma em informação.

O uso do controller mudou um pouco ao longo do tempo, assumindo um papel de veículo entre a camada de modelo e a camada de visão.

Mas por que dividir um software em camadas?

A resposta é simples: para tornar a aplicação mais manutenível, testável e escalável para novas features.

Fica fácil saber onde encontrar e corrigir um problema na exibição de informações, como um nome de usuário que não é informado por completo em determinado local. Este problema, é certo, estará na camada de visão, num arquivo específico daquela parte de exibição.

É fácil, também, testar somente os componentes de visão após uma alteração de layout. Ou testar a camada de model após uma alteração no modelo de dados ou na regra de negócio.

Desvantagens do MVC

MVC é um padrão de projeto com regras a serem seguidas, e por isso, leva um certo tempo para se construir a estrutura inicial de uma aplicação. Isso pode ser facilmente resolvido com a utilização de um bom framework. Mas ainda assim, há uma certa dificuldade em estruturar as models e os controllers de tal forma que respeitem os bom padrões de desenvolvimento. Assim, este não é um padrão para ser usado em aplicações pequenas, onde a escala não é prevista.

O desenvolvedor pode conhecer e saber separar o que é um modelo, uma entidade, uma regra de negócio e um tratamento de visualização. Porém, na maioria das vezes, o dono do projeto não é um desenvolvedor, mas sim um advogado, um lojista, etc. Assim, estruturar a aplicação com MVC se torna um desafio muito maior para o desenvolvedor, pois ele precisará entender bastante do negócio antes de iniciar o desenvolvimento da aplicação.

--

--