С MVC, принадлежат ли взаимодействия с автономными периферийными устройствами в Модели или Контроллере?

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

Этот вопрос - моя попытка согласовать все, что я читаю, что подчеркивает максиму "тощих контроллеров" с моей интуитивной интуицией о том, что Модель должна действовать только на данные, а не на их получение.

(Примечание: этот вопрос может быть субъективным. Я не совсем уверен, что на этот вопрос есть один верный ответ. Если нет, не стесняйтесь повторять, так как мне будет очень интересно услышать мнения по этому вопросу.)

3 ответа

Решение

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

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

Но я бы не ожидал, что модель будет иметь периферийные интерфейсы.

-Адам

Вы можете добавить тонкий слой обслуживания под контроллером и над моделью, что позволит вам разместить весь ваш доступ к периферийному коду в одном месте.

Контроллер должен выполнить опрос. Модель - это моментальный снимок состояния, поэтому состояния камеры должны передаваться из контроллера в модель.

Другие вопросы по тегам