Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [robotlegs] - Команда и Медиатор (http://www.flasher.ru/forum/showthread.php?t=154435)

3p.station 17.04.2011 17:18

[robotlegs] - Команда и Медиатор
 
Всем привет. Немного освоившись с МВЦ захотелось пощупать движок. выбрал robotlegs. Читаю мануалы, часть понятна, но есть и непонятные моменты.
Как я понял - часть логики помещается в различные Command'ы и часть в Mediator'ах отдельных вьюшек. Подскажите, пожалуйста, как этим грамотно пользоваться :) (и модель меняется как и с медиатров так и из комманд ? как опредлить где лучше для какого случая это делать)
спасибо.

Aziz Zaynutdinoff 17.04.2011 17:37

Я у себя использую это так:
состояние view меняет его медиатор. Команды меняют модель.
Соответственно при выполнении команды, меняется модель, на изменение модели подписан медиатор, который производит манипуляции со своим представлением.

3p.station 17.04.2011 18:00

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

alatar 17.04.2011 18:17

Это в каком примере медиатор меняет модель?

3p.station 17.04.2011 18:24

самое начало - Hello Flash, класс --- >BallMediator
Код AS3:

private function onClick(e:MouseEvent):void
                {
                        // Manipulate the model
                        statsModel.recordBallClick();
                        // Dispatch to context
                        eventDispatcher.dispatchEvent(new HelloFlashEvent(HelloFlashEvent.BALL_CLICKED, view));
                }

это первое что мне попалось - и сразу написал этот пост :rolleyes:

alatar 17.04.2011 18:25

Нашел в cafetownsend в EmployeeDetail, но там у вьюхи своя собственная модель и менять ее может только этот медиатор. В принципе, такое не рекомендуется, но как и в любой другой ситуации иногда можно отступать от принципов (если ситуация остается контролируемой).

Добавлено через 4 минуты
Цитата:

самое начало - Hello Flash, класс --- >BallMediator
На от он и Hello. Как говорится, если очень хочется, то можно. Можете еще примеры из pureMVC посмотреть, они похожи по-идеологии.

3p.station 17.04.2011 18:37

Цитата:

Сообщение от alatar (Сообщение 990115)
(если ситуация остается контролируемой).

как показывает практика - сначала обычно много кажется контролируемым :D
лучше модель будет менять таки камманда

спасибо вам товарищи за ответы

alatar 17.04.2011 18:39

Цитата:

лучше модель будет менять таки камманда
С этим я и не спорю.

3p.station 17.04.2011 18:53

мы как раз тут совсем не соприли ((((((( : - я лишь соглашался со всеми постами и с вашим тоже
все гуд, спасибо

Zebestov 17.04.2011 20:27

комманда
камманда
команда

Bgg 17.04.2011 20:33

Цитата:

Сообщение от Zebestov (Сообщение 990140)
комманда
камманда
команда

Если пишут "комманда", то сразу понятно, что речь идет о паттерне, а если правильно пишут, значит не о паттерне. :away:

Zebestov 17.04.2011 20:39

А названия топика недостаточно для понимания?

3p.station 17.04.2011 20:57

:rolleyes:
да, я неграмотный, простите

3p.station 21.04.2011 16:33

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

alatar 21.04.2011 16:42

Как-то попахивает. Надо (ну или не надо ;)):
1. Юзер кликает логин.
2. Медиатор шлет событие.
3. Команда реагирует на событие и дергает сервис.
4. Сервис, если все нормально меняет модель или шлет событие / меняет модель, если что-то пошло не так.
5. Модель рапортует об изменении.
6. Медиатор реагирует на изменения.

3p.station 21.04.2011 21:46

1 - Это выходит грубоговоря на каждое действие юзера нужно создавать команду ? тоесть выходит 3 хендлера - первый ловит клик в самой вьюшке , второй в медиаторе(вьююшка послала ивент), и 3 - сама команда. Тогда будет немерянно команд и слушателей событий.
2 - сервис менять может модель ? может ли медиатор слушать изменения сервиса ?

(я понимаю что все это условности - но есть же практические наработки, помогите новичку плиз)

Mur4ik 21.04.2011 23:25

Robotlegs именно тем и хорош, что не заставляет вас делать что-то так или иначе, у вас полная свобода действий. А бестпрактис это каждый для себя сам уже нарабатывает, как оно удобнее, правильнее или быстрее или ... короче, это с опытом придет. Если сейчас вам удобно, то это уже можно считать правильным, позже сами поймете что вы делаете не так и почему.

1. медиатор сам может подписаться на клик вьюхи (но удобнее тут использовать сигналы), и сам шлет уже кастомное событие, которое поймает тот кому это нужно (например примапленная команда). Либо да, въюха шлет событие, медиатор ловит и сам шлет либо это же событие дальше, либо свое новое, но это каша и неудобно, но за то гибко.
2. может и может.


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

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