MVC vs MVP
O Model View Controller (também conhecido como MVC) é um padrão de natureza arquitetural usado especificamente na engenharia de software. Esse padrão específico é usado para isolar o que é conhecido como 'lógica do domínio' - que é simplesmente a lógica de um aplicativo para o usuário. É isolado da entrada e apresentação (conhecida como GUI) e permite o desenvolvimento independente.
O Model View Presenter (também conhecido como MVP) é uma permutação direta do MVC. É um padrão de software (mais especificamente, um padrão de design de interface do usuário) projetado especificamente para ajudar no teste de unidades automatizadas e melhorar o que é conhecido como a separação de preocupações na lógica de apresentação. A separação de preocupações é basicamente um processo pelo qual um programa de computador é separado em recursos distintos que não se sobrepõem, em termos de como eles funcionam.
A parte do modelo do MVC é essencialmente um padrão que representa dados através de domínios específicos, os dados usados para permitir que o aplicativo opere. A parte da visualização transforma o modelo em uma interação adequada para os usuários - esse geralmente é um elemento da interface do usuário. Finalmente, a parte do controlador recebe mais apropriadamente a entrada. Ao tomar decisões para os objetos encontrados no modelo, o controlador serve como um catalisador para a resposta.
A parte do modelo do MVP define os dados que devem ser exibidos (ou usados) na interface do usuário. A parte da exibição exibe os dados definidos no modelo e envia comandos solicitados pelo usuário (conhecidos como eventos) ao apresentador (que atuará sobre esses dados). O apresentador, então, atua no modelo e na visualização do modelo. Como tal, é capaz de recuperar dados de repositórios (encontrados no modelo), continuando os dados e formatando-os, para que sejam exibidos facilmente na visualização.
Existem diferentes variantes do MVC. Dessa forma, o fluxo do controle está em uma ordem muito estrita: primeiro, o usuário irá interagir com a interface (pressionando um botão no mouse, por exemplo) e, em seguida, o controlador cuidará do evento de entrada e o transformará em a ação apropriada do usuário. Em seguida, o controlador notifica o modelo do que o usuário fez, o que provavelmente resultará na alteração do estado do modelo (como uma atualização, por exemplo). A visualização então coloca uma pergunta ao modelo para gerar a interface do usuário. Finalmente, a interface do usuário aguarda instruções que reiniciarão o ciclo.
Resumo:
1. MVC é um padrão arquitetural que isola a lógica do domínio; O MVP é um descendente do MVC projetado para ajudar a testar unidades automatizadas e melhorar a separação de preocupações.
2. Em relação ao MVC, o modelo representa os dados, a visualização o transforma em uma interação amigável e o controlador recebe a entrada; no que diz respeito ao MVP, o modelo define os dados, a visualização os exibe e o apresentador age no modelo e em sua visualização.