Подтвердить что ты не робот

В MVC, где вы рисуете линию между контроллером и моделью?

Я видел код, написанный там, где почти весь код, не связанный с маршрутом, передается модели. Я также видел код, где все стойкость базы данных обрабатывается моделью, но обработка не-DB обрабатывается контроллером.

Каков наилучший подход?

4b9b3361

Ответ 1

Линия между контроллером и моделью на самом деле понятна.

Модель - ваше приложение. Он содержит логику бизнеса/домена, необходимую для решения проблемы, на которую было написано ваше приложение. Модель обычно накладывается на несколько других слоев, например. настойчивость, услуги, домен и т.д. Это распространенное заблуждение, что модель - это просто база данных, поскольку это распространенное заблуждение, что база данных должна быть ActiveRecord.

Контроллер (и вид) являются частью уровня представления. Единственная ответственность контроллера - получать и обрабатывать ввод пользователя, направленный на ваше приложение, и делегировать его соответствующим частям модели. Больше ничего. Он не должен обрабатывать сложный поток приложений или код вашего проблемного домена. Вы хотите, чтобы контроллеры были тощими и моделировали жир с логикой. Модель не должна знать ни о C, ни о V, и вы должны иметь возможность менять V и C для другого уровня презентации без необходимости касаться вашего M.

См. Выдержка MVC в шаблонах архитектуры корпоративных приложений