Model-view-controller - Model–view–controller

Diagrama de interações dentro do padrão MVC

Model-view-controller (geralmente conhecido como MVC ) é um padrão de design de software comumente usado para desenvolver interfaces de usuário que dividem a lógica do programa relacionado em três elementos interconectados. Isso é feito para separar as representações internas de informações das formas como as informações são apresentadas e aceitas pelo usuário.

Tradicionalmente usado para interfaces gráficas com o usuário ( GUIs ) de desktop , esse padrão se tornou popular para projetar aplicativos da web . Linguagens de programação populares têm estruturas MVC que facilitam a implementação do padrão.

Componentes

Modelo
O componente central do padrão. É a estrutura de dados dinâmica do aplicativo, independente da interface do usuário. Gerencia diretamente os dados, a lógica e as regras da aplicação.
Visualizar
Qualquer representação de informações como um gráfico, diagrama ou tabela. São possíveis várias visualizações das mesmas informações, como um gráfico de barras para gerenciamento e uma visualização tabular para contadores.
Controlador
Aceita entrada e a converte em comandos para o modelo ou vista.

Além de dividir o aplicativo nesses componentes, o design do modelo-visão-controlador define as interações entre eles.

  • O modelo é responsável por gerenciar os dados do aplicativo. Ele recebe a entrada do usuário do controlador.
  • A visualização renderiza a apresentação do modelo em um formato específico.
  • O controlador responde à entrada do usuário e realiza interações nos objetos do modelo de dados. O controlador recebe a entrada, opcionalmente valida-a e, em seguida, passa a entrada para o modelo.

Como acontece com outros padrões de software, o MVC expressa o "núcleo da solução" para um problema enquanto permite que ele seja adaptado para cada sistema. Projetos particulares de MVC podem variar significativamente da descrição tradicional aqui.

História

Um dos insights seminais no desenvolvimento inicial de interfaces gráficas de usuário, MVC se tornou uma das primeiras abordagens para descrever e implementar construções de software em termos de suas responsabilidades .

Trygve Reenskaug introduziu o MVC no Smalltalk -79 enquanto visitava o Centro de Pesquisa Xerox Palo Alto (PARC) na década de 1970. Na década de 1980, Jim Althoff e outros implementaram uma versão do MVC para a biblioteca de classes Smalltalk-80. Só mais tarde um artigo de 1988 no The Journal of Object Technology (JOT) expressou MVC como um conceito geral.

O padrão MVC posteriormente evoluiu, dando origem a variantes como modelo-visão-controlador hierárquico (HMVC), modelo-visão-adaptador (MVA), modelo-visão-apresentador (MVP), modelo-visão-modelo de visão (MVVM), e outros que adaptaram MVC a diferentes contextos.

A utilização do padrão MVC em aplicações de web explodida em popularidade após a introdução de NeXT 's WebObjects em 1996, que foi originalmente escrito em Objective-C (que inspiraram em Smalltalk) e ajudou a aplicar princípios MVC. Mais tarde, o padrão MVC se tornou popular entre os desenvolvedores Java quando WebObjects foi portado para Java . Estruturas posteriores para Java, como Spring (lançado em outubro de 2002), continuaram o forte vínculo entre Java e MVC. A introdução dos frameworks Django (julho de 2005, para Python ) e Rails (dezembro de 2005, para Ruby ), ambos com forte ênfase na implementação rápida, aumentou a popularidade do MVC fora do ambiente corporativo tradicional no qual ele é popular há muito tempo.

Use em aplicativos da web

Embora originalmente desenvolvido para computação de desktop, MVC foi amplamente adotado como um design para aplicativos da World Wide Web nas principais linguagens de programação . Vários frameworks da web foram criados para impor o padrão. Esses frameworks de software variam em suas interpretações, principalmente na forma como as responsabilidades do MVC são divididas entre o cliente e o servidor .

Algumas estruturas MVC da web adotam uma abordagem de cliente fino que coloca quase todo o modelo, visualização e lógica do controlador no servidor. Nessa abordagem, o cliente envia solicitações de hiperlink ou submissões de formulários ao controlador e, em seguida, recebe uma página da Web completa e atualizada (ou outro documento) da visualização; o modelo existe inteiramente no servidor.

Veja também

Referências

Bibliografia