М) М - твоя модель. Как правило, это живет на вашем бизнес-уровне или уровне прямо за уровнем презентации. Многим людям не нравится, чтобы уровень представления имел какие-либо знания о бизнес-уровне, и поэтому они дополнительно абстрагируют это, имея так называемую ViewModel. Это часто DTO (объекты передачи данных), которые слабо сопоставляются с вашей моделью Домена. Для меня (.net парень) есть инструменты, такие как AutoMapper, чтобы сделать преобразование из модели домена в модель представления.
V) V ваше мнение. Представление - это ваш уровень представления. Это фактический код HTML или PHP, к которому пользователь непосредственно обращается и взаимодействует. Представление должно быть как можно более легким (что означает отсутствие логики, если это возможно). Старайтесь не допускать каких-либо сценариев типа if / then вне поля зрения и придерживайтесь только отображения и сбора данных. Подарите ViewModel своим веб-дизайнерам, чтобы они не загрязняли вашу DomainModel.
C) C ваш контроллер. Это очень похоже на координатора. Он берет данные из вашего представления и гарантирует, что он попадает в правую конечную функцию / метод для обработки этих данных. Он также координирует данные от внутреннего интерфейса на пути к внешнему интерфейсу.
Где многоуровневые концепции проектирования находятся за уровнем презентации (где MVC находится в первую очередь). Когда контроллер берет данные из представления и передает их обратно на сервер, он (если вы следуете DDD или доменно-управляемому дизайну) передает данные службе приложений (класс, который координирует работу сервера). Служба может дополнительно помещать данные в слой репозитория (это класс, который говорит с базой данных, файловой системой, веб-службами и т. Д. - с любыми инфраструктурными компонентами). DDD - большая тема, но вы получите представление о n-уровневом подходе и о том, как он работает с MVC.
При исследовании этой темы обратите внимание на IoC (инверсия управления), DI (внедрение зависимостей), TDD (разработка через тестирование) и как можно больше шаблонов (фасад, фабрика и т. Д.).