Контролирует ли контроллер все взаимодействие с моделью в MVC? - PullRequest
0 голосов
/ 16 января 2009

Я создаю игру pacman, используя шаблон MVC. Согласно этой диаграмме в википедии модель и представление взаимодействуют.

"Примечание: сплошные линии указывают на прямую связь, а пунктирные линии указывают на косвенную связь"

Теперь из моего понимания наверняка все идет через контроллер? Скажем, например, что игрок перемещается или пользователь нажимает кнопку «добавить в корзину», разве это не обрабатывается контроллером, а соответствующие данные в модели, управляемой контроллером?

Я не понимаю, почему вид будет взаимодействовать напрямую с моделью?

Спасибо

Адам

Ответы [ 3 ]

1 голос
/ 16 января 2009

Это правда, что было бы очень мало причин для изменения вашей модели с вашего вида (это нет-нет), но вы могли бы в конечном итоге получить доступ (как при чтении) моделей с вашего вида.

Давайте сделаем некоторый псевдокод.

Скажем, у вас есть модель Player и Game.

Ваш контроллер может сделать что-то вроде:

player1 = new Player();
player1.setLives(3);
player1.setScore(0);
player1.setPosition(0, 0);
game = new Game();
game.addPlayer(player1);
game.launch();

Тогда ваш взгляд может сделать что-то вроде:

foreach (game.getPlayers() as player) {
   gameBoard.draw(pacmanGlyh, player.getPosition());
}

Вы видите, что используете модель из вида.

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

1 голос
/ 16 января 2009

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

0 голосов
/ 16 января 2009

Нет, представление считывает свои данные из модели (обычно используя шаблон наблюдателя). PAC (presentation-abstraction-controller) является хорошим примером шаблона на основе MVC, в котором используется шаблон-посредник - контроллер передает сообщения между представлением и моделью.

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