С MVC, принадлежат ли взаимодействия с автономными периферийными устройствами в Модели или Контроллере?
Использование MVC с шаблоном наблюдателя, если пользовательское действие требует опроса устройства (например, камеры) для данных, должен ли опрос выполняться в контроллере и результат передавался из модели или если запрос был отправлен в модель и Модель сама выполняет опрос.
Этот вопрос - моя попытка согласовать все, что я читаю, что подчеркивает максиму "тощих контроллеров" с моей интуитивной интуицией о том, что Модель должна действовать только на данные, а не на их получение.
(Примечание: этот вопрос может быть субъективным. Я не совсем уверен, что на этот вопрос есть один верный ответ. Если нет, не стесняйтесь повторять, так как мне будет очень интересно услышать мнения по этому вопросу.)
3 ответа
Это принадлежит контроллеру. Модель содержит информацию и бизнес-правила, контроллер по сути является интерфейсом для всего, что не является пользователем, информацией или бизнес-правилом, а представление имеет дело с взаимодействием с пользователем.
Кто-то может поспорить, что представление может управлять этим также - модель камеры и драйверы могут быть определены пользователем и, таким образом, попадают под эту область.
Но я бы не ожидал, что модель будет иметь периферийные интерфейсы.
-Адам
Вы можете добавить тонкий слой обслуживания под контроллером и над моделью, что позволит вам разместить весь ваш доступ к периферийному коду в одном месте.
Контроллер должен выполнить опрос. Модель - это моментальный снимок состояния, поэтому состояния камеры должны передаваться из контроллера в модель.