"Olá, amigo!"

"Oi, Bilaabo!"

"Você já é um programador sólido. Então, hoje vamos ter uma aula sobre MVC."

"MVC significa ModelViewController . É um padrão de design de arquitetura para grandes aplicativos, onde o aplicativo é dividido em três partes."

"A primeira parte contém toda a lógica de negócios do aplicativo . Essa parte é chamada de modelo . Ela contém o código que faz tudo para o qual o aplicativo foi criado. Essa parte é a menos dependente das outras."

"A segunda parte contém tudo relacionado à exibição de dados para o usuário . Essa parte é chamada de exibição . Ela contém o código que controla a exibição de janelas, páginas, mensagens, etc."

"A terceira parte contém o código que processa as ações do usuário . Quaisquer ações do usuário destinadas a alterar o modelo devem ser tratadas aqui. Essa parte é chamada de   Controlador ."

"Essa abordagem permite que você crie três coisas independentemente:  a lógica do programa (o modelo) , o mecanismo para exibir os dados do programa para o usuário (a exibição) e um manipulador para entrada/ações do usuário (o controlador) ".

"Os aplicativos frequentemente têm várias visualizações . Isso é normal. Você pode visualizar exatamente os mesmos dados no Excel como números e diagramas. Em jogos, você pode visualizar eventos de uma visualização em primeira pessoa, terceira pessoa ou mapa, além de muitas outras . Todas essas são visões diferentes para um único Modelo .

"Todo o código que decide o que mudar no modelo em resposta às ações do usuário é reunido no Controlador . Por exemplo, se o usuário decidir fechar o programa, você precisará salvar os dados do modelo em um arquivo em disco. Ou se o usuário inserir novos dados, você precisará adicioná-los ao modelo. O modelo notificará todas as visualizações sobre as alterações de dados, para que exibam apenas o estado atual dos dados."

"Diga isso de novo."

"Da perspectiva de um desenvolvedor Java, poderíamos dizer que o modelo, a visualização e o controlador são três grupos de classes em que:"

" a)  cada parte tem sua própria finalidade;"

" b)  as relações entre as classes de um mesmo grupo são muito fortes;"

" c)  as relações entre os grupos são muito fracas;"

" d)  as formas pelas quais as partes se comunicam são fortemente regulamentadas."

"E aqui está outra maneira de imaginar isso:

MVC - 1

"O modelo é a parte mais independente do sistema . Não depende da visão ou do controlador. O modelo não pode usar classes dos grupos de exibição ou controlador (!)."

"A principal limitação da exibição é que ela não pode alterar o modelo . As classes de exibição podem acessar o modelo para obter dados ou se inscrever em eventos, mas as classes de exibição não podem alterar o modelo."

"A principal limitação do controlador é que ele não exibe dados . O controlador processa as ações do usuário e modifica o modelo de acordo."

"Mas por que eu preciso disso?"

"O fato de você não usar isso agora, não significa que você não vai usar isso no futuro próximo. Você está aqui estudando para conseguir um emprego. E mesmo que esse conhecimento não seja útil enquanto estudar, com certeza será útil durante o trabalho."

"Afinal, projetos e entrevistas reais ainda esperam por você..."

"Estamos aqui conversando agora, mas talvez daqui a um mês você já esteja trabalhando."

"Você está absolutamente certo, Bilaabo. Vou ouvi-lo com atenção."

"O padrão MVC é muito comum na arquitetura de aplicativos. Você precisa conhecê-lo para não começar a adicionar classes de exibição repentinamente ao modelo porque acha mais conveniente."

"O mais importante em qualquer projeto é sua arquitetura.  Sua tarefa nesta fase não é tanto ser capaz de criar uma boa arquitetura, mas aprender a entender a de outra pessoa. Você ainda precisará crescer por um alguns anos antes de criar o seu próprio. Mas você precisa entender o que outras pessoas criaram. Imediatamente."

"Quando um aplicativo usa uma arquitetura padrão, tudo fica muito mais claro. Conhecendo a arquitetura, você sabe onde estão as coisas, como tudo interage, aproximadamente como o programa funciona, onde adicionar uma classe necessária e onde procurar a causa do problema um inseto."

"Mas, se você não estiver familiarizado com as abordagens padrão da arquitetura, mesmo a melhor arquitetura não lhe dirá nada. Você será como um camponês da Idade Média olhando para um carro novo. Um carro padrão."

"Entendo. Obrigado pela lição interessante, Bilaabo."

"Finalmente, aqui está um bom link que você definitivamente deveria conferir:"

Link para material adicional