Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос про MVC (http://www.flasher.ru/forum/showthread.php?t=209118)

svdsLis 13.10.2014 20:23

Вопрос про MVC
 
Всем здравствуйте. Сейчас изучаю MVC шаблон (парадигму) и столкнулся с некоторым не понимаем.

Вопрос №1: Допустим в главной модели (GlobalModel) есть ещё 2 (CharacterModel, LocationModel). И изменилась одна из под-моделей. Как правильно осуществить диспетчеризацию?
- в каждую под-модель передавать GlobalModel и из неё вызывать диспетчерезацию?
- или делать bubble (но это не удобно)

Вопрос №2: Как правильно диспетчирезировать события изменения модели?
- использовать только одно событие "Event.CHANGE" или создавать для этого свои классы событий

GBee 13.10.2014 21:04

Если не используете специализированных фреймворков:
1) Как вам удобнее. Разве не контроллер должен дергать вьюхи, рассказывая, что изменилась моделька? Модель же изменяется контроллером?
2) Как вам удобнее.

Gerbert 13.10.2014 21:10

Цитата:

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

Добавлено через 2 минуты
Хотя я наверно не правильно понял Ваши слова. Когда я прочел Ваши слова, то в голове нарисовалась картинка из слов сказанных не Вами, но гласящих, что контроллер включает нужную вью.

Добавлено через 2 минуты
Вы случаем не об этом?)

cleptoman 13.10.2014 21:50

1 - пусть каждый вью слушает свою модель..не обязательно таскать все модели на все случаи жизни в одной главной модели...одна (главная модель) просто фигурирует в большинстве примеров описывающих классическое мэвэвцэ.
2 в вашем случае контроллер может сказать модели сколько у нее осталось жизней..вьюха слушает изменение ХП из модели и сама принимает решение сколько лампочек ей зажечь.

GBee 13.10.2014 21:55

Цитата:

Вы случаем не об этом?)
Я не знаю, я с мвц даже не "на вы", а на "здравствуйте, как вас зовут?".
Но у меня в голове контроллер связывает данные и вьюхи. Соответственно следит, что модель изменилась и говорит вьюхам - отобразите. Ну и сам конечно меняет модель (данными с сервера, например). Конечно бывают исключения, когда из вьюхи быстрее узнать, что модель изменилась. Короче я не за строгое соблюдение парадигм (и табу хехе).

То есть, если робота ударили, то об этом узнает контроллер, он пишет в модель новое состояние, и говорит аватару робота - обнови инфу из модели.

svdsLis 13.10.2014 22:02

Правильно ли я понимаю, что код вроде этого, должен находиться в модели:
Код AS3:

var count:uint;
var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.Timer, onTimer);
 
function onTimer(e:TimerEvent):Void
{
count++;
}

А в контроле должно быть:
Код AS3:

model.timer.start();

Тобишь контролер должен/может заставить модель само измениться?

Gerbert 13.10.2014 22:03

Цитата:

2 в вашем случае контроллер может сказать модели сколько у нее осталось жизней..вьюха слушает изменение ХП из модели и сама принимает решение сколько лампочек ей зажечь.
С Вами я согласен, мне просто очень интересно мнение GBee, если же он конечно придерживается концепции, где контроллер решает, какую вью нужно включать. В последнее время я все чаще слышу о том, что контроллер должен выбирать вид...

cleptoman 13.10.2014 22:13

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

это как на картинках...в жизни все может быть несколько сложней

svdsLis 13.10.2014 22:22

Цитата:

Сообщение от cleptoman (Сообщение 1173394)
ну это мы можем щас тут раздуть много всего. и про декораторы для лампочек и про медиаторы и прочее..
атвору - суть проста:
вьюха - стостоит из трех лампочек ,имеет ссылку на моедль и слушает ее изменение..самостоятельно принимает решение сколько чего и как отобразить в зависимости от изменениях в модели.
контроллер имеет ссылки на модель и вьюху (с последней работает напрямую исходя из контекста употребления и здравого смысла). слушает интерактиыне события вьюхи и меняет модель.

это как на картинках...в жизни все может быть несколько сложней

Только вот спрашиваю я про другое.

GBee 14.10.2014 00:35

Цитата:

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


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

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