En mi mente las diferencias para todas las variaciones de los patrones Modelo Vista Controlador (MVP, Passive View, Supervising Controller, Ver Modelo, etc.) son muy sutiles. Se trata de quién procesa los datos y toma los datos de quién, realmente. Todos están tratando de resolver el mismo problema, separando algo de otra cosa,, y las soluciones hacen todo eso de manera similar.
Es casi claramente evidente que los conceptos son similares en su aplicación cuando se piensa en ello en términos visuales:
Simplistic MVC:
+-------+ manipulates data
| Model |<---------------------+
+-------+ |
| |
| gets data |
v |
+------------+ serves data +------+
| Controller |------------->| View |
+------------+ +------+
Simplistic MVP:
+-------+
| Model |
+-------+
|^
| | get/manipulates data
v |
+-----------+ serve data +------+
| Presenter |-------------->| View |
| |<--------------| |
+-----------+ tell changes +------+
Son similares en que la jerarquía de clases puede parecer el mismo en ambos. La diferencia, sin embargo, son las diferentes maneras de mostrar y manipular datos. Cuando estás desplegando tu propio MVC, estás a cargo de cómo debería verse.
Realmente no importa mucho, ya que todos se basan en un principio de separar las partes de código en entidades lógicas independientes y reducir la duplicación de código. Siempre que mantenga el code coupling low, debería funcionar bien al final. Solo importa si quieres ser consecuentemente dogmático con la arquitectura de tu aplicación.
Sea pragmático al respecto y haga lo que mejor se adapte a sus necesidades ya que terminará con una mezcla de todos modos. Debería ser "bastante" fácil cambiar entre las variaciones según lo que necesite la vista. Siga los principios SOLID y debería hacerlo bien. (Ver también this about SOLID).
Le sugiero que investigue si hay marcos MVC o MVP para ver cómo se hace.
+ 1..always apreciar diagramas ASCII en las respuestas. –
spoike: tu respuesta es bastante explicativa ... Gracias. – Sumeet