O que é o Model-View-Controller?
O Model-View-Controller (MVC) é um tipo de arquitetura de software e padrão de design que segmenta cada elemento de um programa em áreas bem definidas de funcionalidade. Na arquitetura de modelo-visualização-controlador, o modelo lida com toda a lógica interna do programa que manipula, salva, recupera e, de outra forma, manipula e calcula dados. O aspecto da visualização é responsável por exibir informações do modelo para o usuário e também fornece uma maneira de o usuário fornecer informações ao programa. O controlador pega a entrada da visualização, avalia ou a processa e interage com o modelo para alterar dados ou o estado do programa, o que é mostrado ao usuário através da visualização. Embora o design do modelo-visualizador-controlador exija um programa para encapsular a funcionalidade, as três seções ainda precisam interagir de alguma forma e geralmente dependem uma da outra em algum sentido, ao contrário de outros padrões de design mais agressivos.
Muitas vezes, o padrão de modelo-visualização-controlador é visto em aplicativos que gerenciam uma interface gráfica do usuário (GUI). Utilizando o padrão MVC, os diferentes elementos visuais da GUI são manipulados pela visualização, pelo registro e processamento de onde e em que um usuário clica é manipulado pelo controlador e, na verdade, a alteração das informações ou o carregamento das informações são feitas pelo modelo. Dependendo do design exato de um aplicativo, cada componente do padrão MVC pode ter um mecanismo para interagir com os outros componentes, como o modelo que pode instruir diretamente a exibição para atualizar a tela ou a exibição com uma maneira de informar o controlador que atualiza a tela e não aceita novas entradas. Ao contrário de alguns padrões de design que adotam uma abordagem estrita de caixa preta, os programas de controlador de exibição de modelo tendem a ser um pouco mais flexíveis, embora algumas implementações possam dificultar a alteração ou depuração modular de um programa MVC.
Em certos casos, o padrão model-view-controller não precisa conter apenas um de cada componente. Um exemplo é um aplicativo que possui várias visualizações, como vários monitores ou uma exibição que pode ser vista em vários dispositivos clientes. Várias visualizações e controladores podem ser usados em um aplicativo que permite que muitos usuários acessem um banco de dados, todos respondendo a um único modelo. É mais comum, no entanto, projetar sistemas que mantêm uma proporção de um para um dos componentes do modelo-visualização-controlador.
Embora os componentes do controlador de exibição de modelo confiem um no outro, pode ser muito mais fácil modificar certas partes de um sistema que usam o padrão MVC do que se nenhum padrão fosse usado, especialmente no caso de orientação não-objeto aplicações. Se um aplicativo usar retornos de chamada ou ouvintes e observadores para implementar interações entre os componentes, cada componente poderá ser alterado sem afetar os outros dois. Isso significa que uma nova GUI pode ser implementada sem afetar o modelo ou o controlador. Deve-se notar, no entanto, que mudanças fundamentais em um sistema de controlador de exibição de modelo podem exigir uma pequena quantidade de recodificação para cada componente individual.