Цитата:
редставим, что приложение имеет подключение к базе данных, читает конфиг файл и для сохранения состоянии (сессии) записывает данные в Sharedobject.
|
Это Модель.
Цитата:
А также несколько окошек, игровую сцену, звуки и т.д.
|
Это Вью.
Цитата:
Вопрос лишь в том, как Вид слушает ответ от 5 моделей?
|
MVC это не паттерн, а парадигма. Паттернов в нем может быть еще десяток разных. Если Вам действительно необходимы 5 моделей (а это не факт), можно сделать им Фасад. Можно и не делать, а иметь 5 "независимых" MVC. Это уж надо решать в конкретной ситуации.
Цитата:
Какая роль у контроллера?
|
Разделить Вью и Модель так, чтобы не было жесткой связности. То есть, чтобы Вью не пришлось импортировать Модель (что явный нонсенс). Вообще, в отличие от вашего представления в первом посте, Вью и контроллер-то не импортирует и не имеет на него ссылки. Потому что Вью должна только посылать события о том, что юзер сделал то-то и то-то. У Вью нет
логического языка, то есть Вью не может формулировать сообщения в виде "юзер убил танк №112". Вью не берет на себя логику. Вью может сообщать только "юзер нажал клавишу Пробел". И вот здесь, по парадигме MVC, включается контроллер, поскольку Модель живет в своем мире Данных и понятия не имеет ни о каких клавишах и мышках. Контроллер — тот, кто Знает, что именно в
текущем режиме Приложения делает клавиша Пробел. Какой именно метод Модели надо вызвать. Потому что в режиме Меню клавиши "делают" одно, в режиме Чата другое, в Инвентаре — третье, а в бою — четвертое. Контроллер контролирует действия юзера в зависимости от режима (mode), в котором находится Приложение. Переключение этих режимов может менять сами контроллеры (почему, собственно, выгодна схема с событиями от Вью а не вызовами методов контроллера напрямую — замена контроллера в такой ситуации была бы крайне затруднительна). Таким образом контроллеры инкапсулируют в себе поведение. Не логику Игры, не вычисления, а именно
трактовку действий юзера в условиях текущего Состояния приложения, характер интерактива. Потому что эту трактовку не может себе позволить ни Вью, максимально удаленная от логики и данных, ни Модель, максимально удаленная от способа отображения данных и взаимодействия с пользователем.