Este material faz parte da série "Introdução ao Desenvolvimento Corporativo". Artigos anteriores:
Neste artigo vamos conhecer algo chamado MVC. Falaremos sobre o que é MVC, abordaremos sua história, exploraremos as ideias e conceitos básicos incorporados no MVC, veremos passo a passo como dividir um aplicativo em módulos Model, View e Controller, escrever um pequeno aplicativo da web usando Spring Boot e, usando Spring MVC como exemplo, veja como os dados são enviados do código Java para as páginas HTML. Para entender este material, você precisa estar familiarizado com os padrões de projeto, especialmente observador e fachada. E esteja familiarizado com as solicitações e respostas HTTP, entenda os fundamentos do HTML e saiba o que são anotações Java. Pegue uma xícara de café e lanche e fique confortável. Vamos começar.
De tudo isso, podemos tirar uma conclusão lógica. Um sistema complexo precisa ser dividido em módulos. Vamos descrever brevemente as etapas para alcançar essa separação.
E é assim que chegamos a um aplicativo que consiste em três módulos chamados model, view e controller. Vamos resumir:
- sobre networking
- sobre arquitetura de software
- sobre HTTP/HTTPS
- sobre o básico do Maven
- sobre servlets (escrever uma aplicação web simples)
- sobre contêineres de servlet

História do MVC
As ideias por trás do MVC foram formuladas por Trygve Reenskaug enquanto trabalhava na Xerox PARC no final dos anos 1970. Naquela época, trabalhar com computadores exigia um diploma e estudo constante de volumosa documentação. A tarefa resolvida por Reenskaug junto com um grupo de desenvolvedores muito fortes foi simplificar a interação de um usuário comum com o computador. Era necessário criar ferramentas que, por um lado, fossem extremamente simples e compreensíveis e, por outro, permitissem o controle de computadores e aplicativos complexos. Reenskaug trabalhou em uma equipe que desenvolveu um laptop "para crianças de todas as idades" - o Dynabook, bem como a linguagem SmallTalk sob a liderança de Alan Kay. Foi quando os conceitos de uma interface amigável foram estabelecidos. Em muitos aspectos, o trabalho realizado por Reenskaug e sua equipe influenciou a evolução da esfera de TI. Aqui está um fato interessante que não se aplica diretamente ao MVC, mas ilustra a importância desses desenvolvimentos. Alan Kaydisse, "Quando cheguei à Apple, em 84, o Mac já havia sido lançado e a Newsweek entrou em contato comigo e perguntou o que eu achava do Mac. Eu disse: 'Bem, o Mac é o primeiro computador pessoal bom o suficiente para ser criticado.' Então, depois de anunciar o iPhone em 2007, ele o trouxe para mim e me entregou. Ele disse: 'Alan, isso é bom o suficiente para ser criticado?' E eu disse: 'Steve, torne-o tão grande quanto um tablet e você dominará o mundo.'" Depois de 3 anos, em 27 de janeiro de 2010, a Apple lançou o iPad com diagonal de 9,7 polegadas. Em outras palavras, Steve Jobs seguiu quase exatamente o conselho de Alan Kay. O projeto de Reenskaug durou 10 anos. Mas a primeira publicação sobre MVC veio à tona depois de mais 10 anos. Martin Fowler, autor de vários livros e artigos sobre arquitetura de software, menciona que estudou MVC usando uma versão funcional do Smalltalk. Como não havia informações sobre o MVC da fonte original por muito tempo e por vários outros motivos, um grande número de interpretações diferentes desse conceito apareceu. Como resultado, muitos consideram o MVC um padrão de design. Menos comumente, o MVC é chamado de padrão composto ou uma combinação de vários padrões que trabalham juntos para criar aplicativos complexos. Mas, como mencionado anteriormente, o MVC é basicamente um conjunto de ideias/princípios/abordagens arquiteturais que podem ser implementadas de várias maneiras usando diferentes padrões... Em seguida, consideraremos as principais ideias incorporadas ao conceito MVC. e por várias outras razões, um grande número de diferentes interpretações desse conceito apareceu. Como resultado, muitos consideram o MVC um padrão de design. Menos comumente, o MVC é chamado de padrão composto ou uma combinação de vários padrões que trabalham juntos para criar aplicativos complexos. Mas, como mencionado anteriormente, o MVC é basicamente um conjunto de ideias/princípios/abordagens arquiteturais que podem ser implementadas de várias maneiras usando diferentes padrões... Em seguida, consideraremos as principais ideias incorporadas ao conceito MVC. e por várias outras razões, um grande número de diferentes interpretações desse conceito apareceu. Como resultado, muitos consideram o MVC um padrão de design. Menos comumente, o MVC é chamado de padrão composto ou uma combinação de vários padrões que trabalham juntos para criar aplicativos complexos. Mas, como mencionado anteriormente, o MVC é basicamente um conjunto de ideias/princípios/abordagens arquiteturais que podem ser implementadas de várias maneiras usando diferentes padrões... Em seguida, consideraremos as principais ideias incorporadas ao conceito MVC.MVC: Idéias e princípios básicos
- VC é um conjunto de ideias arquitetônicas e princípios para a construção de sistemas de informação complexos com uma interface de usuário
- MVC é uma abreviação que significa: Model-View-Controller

Etapa 1. Separe a lógica de negócios do aplicativo da interface do usuário
A ideia principal do MVC é que qualquer aplicação com interface de usuário pode ser dividida em 2 módulos: um módulo responsável por implementar a lógica de negócios e a interface de usuário. O primeiro módulo implementará a funcionalidade principal do aplicativo. Este módulo é o núcleo do sistema, onde é implementado o modelo de domínio da aplicação. No paradigma MVC, este módulo é a letra M, ou seja, o modelo. O segundo módulo implementa toda a interface do usuário, incluindo a lógica para exibir dados para o usuário e lidar com a interação do usuário com o aplicativo. O principal objetivo dessa separação é garantir que o núcleo do sistema (o "modelo" na terminologia MVC) possa ser desenvolvido e testado de forma independente. Após fazer essa separação, a arquitetura do aplicativo fica assim:
Etapa 2 Use o padrão observador para tornar o modelo ainda mais independente e sincronizar as interfaces do usuário
Aqui temos 2 objetivos:- Obtenha uma independência ainda maior para o modelo
- Sincronizar interfaces de usuário
Passo 3 Separe a interface em view e controller
Continuamos dividindo o aplicativo em módulos, mas agora em um nível inferior na hierarquia. Nesta etapa, a interface do usuário (que separamos em um módulo distinto na etapa 1) é dividida em uma exibição e um controlador. Desenhar uma linha estrita entre a visão e o controlador é difícil. Se dissermos que a visão é o que o usuário vê e o controlador é o mecanismo que permite ao usuário interagir com o sistema, você pode apontar uma contradição. Elementos de controle, como botões em uma página da Web ou um teclado virtual na tela de um telefone, são basicamente parte do controlador. Mas eles são tão visíveis para o usuário quanto qualquer parte da visualização. O que realmente estamos falando aqui é a separação funcional. A principal tarefa da interface do usuário é facilitar a interação do usuário com o sistema.- saída e exibição conveniente de informações do sistema para o usuário
- inserir dados e comandos do usuário (comunicá-los ao sistema)

- De acordo com os princípios do paradigma MVC, um sistema deve ser dividido em módulos.
- O módulo mais importante e independente deve ser o modelo.
- O modelo é o núcleo do sistema. Deve ser possível desenvolvê-lo e testá-lo independentemente da interface do usuário.
- Para conseguir isso, na primeira etapa da divisão, precisamos dividir o sistema em um modelo e interface de usuário.
- Em seguida, usando o padrão observador, reforçamos a independência do modelo e sincronizamos as interfaces do usuário.
- A terceira etapa é dividir a interface do usuário em um controlador e exibição.
- Tudo o que é necessário para receber os dados do usuário no sistema está no controlador.
- Tudo o que é necessário para fornecer informações ao usuário está na exibição.
Um pouco sobre como a view e o controller interagem com o model
Ao inserir informações por meio do controlador, o usuário altera o modelo. Ou, pelo menos, o usuário altera os dados do modelo. Quando o usuário recebe informações por meio de elementos da interface (através da view), o usuário está recebendo informações sobre o modelo. Como isso acontece? Por quais meios a view e o controller interagem com o model? Afinal, as classes da view não podem chamar diretamente os métodos das classes do model para ler/escrever dados. Caso contrário, não poderíamos dizer que o modelo é independente. O modelo é um conjunto de classes intimamente relacionadas às quais nem a visão nem o controlador devem ter acesso. Para conectar o modelo à visão e ao controlador, precisamos implementar o padrão de projeto de fachada. A fachada do modelo é a camada entre o modelo e a interface do usuário, por meio do qual a visualização recebe dados convenientemente formatados e o Controlador altera os dados chamando os métodos necessários na fachada. No final, tudo fica assim:
GO TO FULL VERSION