http://www.martinfowler.com/bliki/AnemicDomainModel.html

сто прочиталСообщение блога это объясняет MVC банковской аналогией. У меня есть несколько месяцев опыта в разработке веб-приложений с использованием инфраструктуры MVC (CakePHP), поэтому я получил основы, но я начал видеть тему, которая заставила меня думать, что я придерживаюсь некорректного подхода к тому, где я изложил свою логику:

Жирные модели, тощие контроллерыСохраняйте как можно больше бизнес-логики в моделях

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

Просматривая мои контроллеры, я теперь могу определить много логики, которая, вероятно, должна идти в модели:

Приложение имеет списки, которые содержат элементы, и элементы могут быть ранжированы. Логика сортировки, которая размещает список в ранжированном порядке, находится в контроллере.Аналогично, элементы (модель элемента) также имеют изображения (модель изображения). Каждый элемент может иметь изображение по умолчанию (обозначается как image_id в таблице элементов). Когда элемент отображается с его изображениями, изображение по умолчанию должно появляться первым. У меня есть логика, которая делает это в контроллере.Когда отображается список, связанные списки отображаются на боковой панели. Логика для определения того, какие списки связаны, находится в контроллере.

Теперь к моим вопросам:

С примерами, которые я привел выше, я на правильном пути, думая, что это примеры логики в настоящее время в контроллере, который принадлежит модели?Какие еще области логики, общие для веб-приложений, должны входить в модели?Я уверен, что выявить эту проблему и изменить мой шаблон проектирования - это полдела, но даже если я решу взять те примеры, которые я привел выше, и попытаться перенести эту логику в модель, я не знаю, с чего начать. Может ли кто-нибудь указать мне правильное направление, разместив здесь некоторый код или ссылки на хорошие учебные ресурсы? CakePHP поможет, но я уверен, что чего-нибудь MVC хватит.

Ответы на вопрос(2)

Ваш ответ на вопрос