Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   Хорошее MVC (http://www.flasher.ru/forum/showthread.php?t=138349)

Zebestov 11.08.2013 19:07

Контроллер передает в конструкторе.

Dukobpa3 11.08.2013 20:13

Как вариант, да и впринципе практически всегда конает.
Но вообще вью может быть подписана не на одну модель.

Т.е. модели к примеру:
- профиль игрока
- текущий бой
- статические данные (ссылки на арт, конфиги и прочую муть)

А вью к примеру - магазин. Подписывается и читает профиль плюс статические данные.
Вью боевки - читает профиль и модель боя.

Добавлено через 5 минут
Я после того как инкапсулировал логику в моделях - перестал комплексовать на тему дробления моделей, вплоть до того что могу на весь проект тупо две модели сделать: Статик данные(конфиги игры, цены в магазине, ссылки на ассеты) и динамик данные(то что меняется во время игры, текущее состояние карманов игрока и в таком духе).

Так как у модели всего парочка паблик методов которые что-то могут изменить - то накосячить очень сложно.
А то что одну модель смогут читать все кому не лень - ну и пофиг. Упрощает жизнь.

Akopalipsis 11.08.2013 21:10

Цитата:

Но вообще вью может быть подписана не на одну модель.
я вот как тренируюсь - контроллер создаёт модель и передаёт её во вью. Все как по стандарту.
Вью по умолчанию создаёт круг и считывает цвет у модели. В модели через несколько секунд срабатывает таймер, который говорит ей, что нужно создать другую модель, модель квадрата. Она успешно создает модель квадрата и диспатчит вью, что уже можно рисовать квадрат и считывать с него цвет, так как модель квадрата создана. Вью рисует квадрат, но вью квадрата не чего не знает о модели квадрата. Где у меня хромота начинается?

Dukobpa3 11.08.2013 21:14

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

Akopalipsis 11.08.2013 21:28

Dukobpa3 Спасибо вам за вправку мозга! я что с миниатюрами забыл, что смена модели это куда больше чем цвет)))

Akopalipsis 17.08.2013 18:28

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

Dukobpa3 17.08.2013 19:16

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

На стейдж подписан Мейн. Стартовый класс игры. По изменению размеров стейджа - меняет содержимое конфига.А далее уже все заинтересованные лица подписываются на него(Часто он у меня просто статический класс, так что никто не подписывается, просто знают что в нем всегда актуальная информация).

Akopalipsis 19.08.2013 21:33

Dukobpa3 Спасибо! я пока склоняюсь к двум вариантам - либо в контроллере ( так как у него у одного может оказаться ссылка на стейдж ), либо в контроллере сделать статическую ссылку и слушать в модели ( так как все равно по ресайзу происходит перерасчёт в и передается во вью ).
Вариант с конфигом пока не рассматриваю, но точно знаю что придётся, так как фреймворки этого требуют.
оффтоп. если кто то может помочь в вопросе - какое место занимает Старлинг в MVC, жду Вас в этой теме http://www.flasher.ru/forum/showthre...=202824&page=2

Добавлено через 48 часов 11 минут
Перед написанием этого вопроса, прочел ещё раз посты которые формировали моё сознание)))) И нашёл то, что ещё не спрашивалось - контроллер слушает модель?) Он может быть подписан на события в модели?

Dukobpa3 19.08.2013 22:02

Может. Но идею это нарушит.

Akopalipsis 19.08.2013 22:24

Вправьте мне мысли
Запуск приложения
Main отдает ссылку на отображение контроллеру
Контроллер создаёт модель ( в конструкторе происходят подготовления )
Контроллер создаёт вью и кидает ей ссылку на модель ( в конструкторе вью происходят подготовления )
Контроллер создает контроллерСервис и в конструктор кидает ссылку на модель
Контроллер сервис в конструкторе создает Сервис

Кто должен предпринимать действия по запуску загрузки?
я просто думал что если логика в модели, то модель должна хранить значение "первого запуска" и говорить контроллеру, чтобы сервис грузил. Тогда как получается, контроллер решает о первом запуске или сервис?


Часовой пояс GMT +4, время: 04:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.