В модели MVC, что идет в модели и что идет в представлении? - PullRequest
1 голос
/ 12 ноября 2009

Я использую шаблон MVC для разработки программного обеспечения для анализа данных (в Python ). Я не уверен, должны ли некоторые функции работать в модели или в контроллере.

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

  • Должны ли функции, выполняющие этот синтаксический анализ файла конфигурации, находиться в модели или в контроллере?
  • Существует ли стандартный способ организации вещей в Python при использовании MVC? Я сделал модель, контроллер и вид на отдельные классы. Класс контроллера содержит экземпляры модели и классы представления.
  • Какая связь должна быть между моделью и представлением? Я структурирую вещи так, что контроллер берет вещи из модели и передает их в представление. Эти два общаются только через контроллер.

Ответы [ 3 ]

2 голосов
/ 12 ноября 2009

Модель должна быть вашими классами сущностей или просто классами, которые моделируют проблемную область, с которой вы работаете. И просматривать все, что в основном связано с тем, как ваш пользователь взаимодействует с системой, которую вы строите. Контролер женится на двоих.

1 голос
/ 12 ноября 2009

По вашему первому пункту, анализ должен идти в модели, если он является частью класса модели; например, если у вас есть модель конфигурации, то функции для загрузки конфигурации принадлежат модели. Если это скорее служба (например, я собираюсь импортировать этот файл, а затем что-то еще выполнит сопоставления), то он должен быть в контроллере. Трудно сказать, не зная подробностей, но это общее правило, которому я следую.

Я не уверен в вашем втором замечании, так как я не знаком с Python, но типичный подход заключается в разделении структуры вашей папки на Models / Controllers / Views и тому подобное, однако я знаком только с MVC, так как относится к веб-приложениям, поэтому я могу быть не в курсе, поскольку ваша программа выглядит как настольное приложение.

Ваш третий пункт совершенно прав. Модель не должна разговаривать с представлением; контроллер связывается с моделью и извлекает информацию, необходимую представлению, и предоставляет представление именно этому. Я предполагаю, что в сущности представление может работать с моделью, но оно ничего не знает о модели (например, если оно исходит из базы данных, файла конфигурации, xml и т. Д.)

0 голосов
/ 12 ноября 2009

Проще говоря, модель - это ваша часть данных (база данных), а представление - это ваша часть дизайна (HTML, CSS, JavaScript и т. Д.), А контроллер - это контракт между моделью и представлением:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...