На мой взгляд, различия для всех вариаций моделей контроллера представления модели ( MVP , Пассивное представление , Контролирующий контроллер , Просмотр модели, и т. Д. . ) довольно тонкие. Все дело в том, кто обрабатывает данные, а кто на самом деле получает данные. Все они пытаются решить одну и ту же проблему, отделяя что-то от другую вещь , и решения делают все это аналогичным образом.
Почти очевидно, что концепции похожи в реализации, когда вы думаете об этом в визуальных терминах:
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 +------+
Они похожи в той иерархии классов, могут выглядеть одинаково в обеих. Разница, однако, заключается в разных способах отображения и манипулирования данными. Когда вы развертываете свой собственный MVC, вы отвечаете за то, как он должен выглядеть.
Это не имеет большого значения, поскольку все они основаны на принципе разделения частей кода на самообслуживаемые логические объекты и уменьшения дублирования кода. Пока вы сохраняете кодовое соединение низким , в конце концов, оно должно работать хорошо. Это имеет значение, только если вы хотите быть догматически последовательными с архитектурой вашего приложения.
Будьте прагматичны в этом и делайте то, что больше всего соответствует вашим потребностям, так как в любом случае вы получите микс. Должно быть «довольно» легко переключаться между вариантами в зависимости от того, что нужно представлению. Следуйте SOLID принципам, и у вас все будет хорошо. (См. Также о SOLID ).
Я бы посоветовал вам изучить, существуют ли инфраструктуры MVC или MVP, чтобы увидеть, как это делается.