Padrão arquitectónico MVP (Model-View-Presenter)

Boa tarde,

Somos estudantes de Licenciatura em Eng. Informática e foi-nos proposto um trabalho sobre MVP (Model-View-Presenter) no desenvolvimento de aplicações com Windows Forms.
Já trabalhamos com o padrão arquitectónico MVC (Model-View-Controller), mas não temos nenhuma experiência com o MVP.
Fizemos uma análise e verificamos que estes dois padrões têm algumas semelhanças. No entanto temos algumas dúvidas e gostaríamos que partilhassem connosco informações sobre o MVP, de forma a que seja gerada uma discussão sobre este tema e partilha de conhecimentos.

Deixo algumas questões:

Há vantagens na utilização do MVP em vez do MVC?
Em que situações devemos optar por usar o MVC ou o MVP?
No MVP, o Presenter relaciona e comunica com o Model e com a View para que estes não dependam um do outro. Até que ponto a sua funcionalidade é diferente do Controller no MVC?



Agradecemos a todos e aguardamos respostas
 
Nunca li nada sobre esse assunto, confesso, mas pelo que dizes, isso parece-me um MVC com um nome diferente.

Por curiosidade, esse é um padrão Microsoft?
Faço essa pergunta porque, por exemplo, para Windows Phone, a MS utiliza o padrão MVVM (Model - View - ViewModel), que me parece que é praticamente o mesmo do MVC, mas com nome diferente..
 
Nunca li nada sobre esse assunto, confesso, mas pelo que dizes, isso parece-me um MVC com um nome diferente.

Por curiosidade, esse é um padrão Microsoft?
Faço essa pergunta porque, por exemplo, para Windows Phone, a MS utiliza o padrão MVVM (Model - View - ViewModel), que me parece que é praticamente o mesmo do MVC, mas com nome diferente..

Os padrões de software são independentes da linguagem de programação, por isso o padrão ser ou não ser Microsoft é irrelevante.
 
Tem de vir o gajo de design, explicar =P
(O meu fundo em programação é baseado em javascript pelo que peço desculpa se falhar algum nome técnico.)

MVC => Todos os componentes "falam" entre si de forma circular. A interacção do utilizador é comunicada pela View ao Controlador, o Controlador responsabiliza-se por comunicar ao Modelo, e o Modelo comunica à View

MVP => Aqui perde-se a circularidade. A View comunica com o Controlador e o Controlador comunica com a View. A View desconhece qualquer tipo de Model que seja, e os Models nem imaginam que existem Views. O Controlador responsabiliza-se por passar/pedir aos Models a informação necessária para a View e a actualizar a View quando o Model responder.

Isto sao filosofias/metodologias mas as suas regras não estão gravadas em pedra… Um exemplo será a nova moda em Javascript de fazer frameworks "MVC" todas dizem ser MVC, mas 90% delas mistura MVC com MVP com MVVM outras nem sequer têm controladores, mas collections…

----

Por curiosidade fui googlar. http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference parece-me uma boa descrição e bastante mais aprofundada ;)
 
Última edição:
Obrigado pelas vossas respostas.

ImAnAlcoholic
a tua resposta foi bastante esclarecedora, mas um pouco resumida.
Se mais alguém poder aprofundar um pouco mais a questão agradecia-mos.

Se poderem deixem alguns exemplos práticos do MVP
 
Back
Topo