Я только что прочитал сообщение в котором объясняется MVC с банковской аналогией. У меня есть несколько месяцев опыта разработки веб-приложений с картой MVC (CakePHP), поэтому я получил основы, но я начал видеть тему, которая заставляла меня думать, что я использую ошибочный подход к тому, где я ставил свою логику:
- Жирные модели, тощие контроллеры
- Сохраняйте как можно больше бизнес-логики в моделях
В моем приложении модели анорексичны, а контроллеры страдают ожирением. У меня есть вся бизнес-логика в контроллерах и ничего кроме ассоциаций и правил проверки в моделях.
Сканирование через мои контроллеры, теперь я могу определить много логики, которые, вероятно, должны идти в модели:
- В приложении есть списки, содержащие элементы, и элементы могут быть ранжированы. Логика сортировки, которая помещает список в ранжированный порядок, находится в контроллере.
- Аналогично, элементы (модель элемента) также имеют изображения (модель изображения). Каждый элемент может иметь изображение по умолчанию (обозначенное как image_id в таблице элементов). Когда элемент отображается с его изображениями, изображение по умолчанию должно отображаться первым. У меня есть логика, которая делает это в контроллере.
- Когда отображается список, соответствующие списки отображаются на боковой панели. Логика определения списков связана с контроллером.
Теперь на мои вопросы:
- С примерами, которые я привел выше, я нахожусь на правильном пути, думая, что это примеры логики в настоящее время в контроллере, который принадлежит модели?
- Каковы некоторые другие области логики, общие для веб-приложений, которые должны входить в модели?
- Я уверен, что идентифицировать эту проблему и изменить свой шаблон дизайна - это половина битвы, но даже если я решит взять те примеры, которые я дал выше, и попытаться переместить эту логику модели, я не знаю, с чего начать, Может ли кто-нибудь указать мне в правильном направлении, разместив здесь какой-нибудь код или связавшись с некоторыми хорошими учебными ресурсами? Специальная помощь CakePHP была бы замечательной, но я уверен, что что-то из MVC будет достаточно.