Это было немного смутно, поэтому я искал googled, чтобы увидеть, что некоторые ведущие authorities должны сказать, потому что Википедия и первые хиты не так хороши, как кажется.
- Модель. Модель управляет поведением и данными домена приложения, отвечает на запросы информации о его состоянии (обычно из представления) и отвечает на инструкции по изменению состояния (обычно из контроллера).
- View. Просмотр управляет отображением информации.
- Контролер. Контроллер интерпретирует входные данные мыши и клавиатуры от пользователя, , информируя Модель и/или вид, чтобы изменить в случае необходимости.
Похоже, что контроллер уведомляет View.
Но важно отметить, что и View, и Controller зависят от модели. Однако Модель не зависит ни от вида, ни от контроллера. Это одно из ключевых преимуществ разделения. Это разделение позволяет создавать и тестировать модель независимо от визуального представления.
И, конечно же, контроллер не может быть только один, который изменяет модель.По этой причине действительно существуют некоторые варианты:
Модель пассивная используется, когда один контроллер управляет только моделью. Контроллер изменяет модель и затем информирует View, что Модель изменилась и должна быть обновлена. Модель в этом сценарии полностью независима от View и Controller, а это означает, что нет возможности для Модели сообщать об изменениях в ее состоянии.
Модель active используется при изменении состояния модели без участия контроллера. Это может произойти, когда другие источники меняют данные, и изменения должны отражаться в представлениях. Поскольку только модель обнаруживает изменения своего внутреннего состояния, когда они происходят, Модель должна уведомить представления для обновления дисплея. -> Объясняет случай.
Это скорее выбор разрешения опроса модели, модели, уведомляющей View напрямую, или контроллера, обновляющего модель -> модель, уведомляющую контроллер -> контроллер, уведомляющий представление, или контроллер, обновляющий модель -> Контроллер, опросив состояние модели -> Контроллер, уведомляющий представление? – Matthias
Да, есть выбор. Например, перед WebSockets и Comet, всегда будет веб-представление, уведомляющее контроллер, который будет опросить модель и отобразить новый вид. С помощью WebSockets или Comet вы можете иметь контроллер, уведомляющий View. Тем не менее, ваш профессор может более строго рассмотреть этот вопрос. –
@ Matthias, это не MVC. То, что вы описали, может быть названо MVP. –