Dans mon esprit les différences pour toutes les variantes de Model View Controller (modèles MVP, Passive View, Supervising Controller, Vue modèle, etc.) sont assez subtiles. Tout dépend de qui traite les données et prend les données de qui, vraiment. Ils essaient tous de résoudre le même problème, séparant quelque chose de une autre chose, et les solutions font tout cela d'une manière similaire.
Il est presque évident que les flagrante concepts sont similaires dans la mise en œuvre quand on y pense en termes visuels:
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 +------+
Ils sont similaires dans cette hiérarchie de classe peuvent regarder la même dans les deux. La différence est cependant les différentes façons d'afficher et de manipuler les données. Lorsque vous déployez votre propre MVC, vous êtes responsable de son apparence.
Cela n'a pas vraiment d'importance, car ils reposent tous sur le principe de la séparation des parties de code en entités logiques individuelles et de la réduction de la duplication de code. Tant que vous gardez le code coupling low il devrait bien fonctionner à la fin. Cela n'a d'importance que si vous voulez être dogmatiquement conséquent avec l'architecture de votre application. Soyez pragmatique et faites ce qui convient le mieux à vos besoins, car vous finirez quand même avec un mixage. Il devrait être "assez" facile de basculer entre les variations en fonction de ce que la vue a besoin. Suivez les principes SOLID et vous devriez faire bien. (Voir aussi this about SOLID).
Je vous suggère de vérifier s'il existe des frameworks MVC ou MVP pour voir comment cela est fait.
+ 1..always diagrammes ASCII appréciant dans les réponses. –
spoike: votre réponse est assez explicative .. Merci. – Sumeet