![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Не знаю как правильно назвать тему, извиняйте.
Давно мучает такой вопрос, есть у нас класс управляющий сервером, тоесть класс приемник данных от сервера и соотв диспатчит события при приходе определенных данных. Задача - подписываться на события из разных классов. Самый простой вариант делаем класс статическим, создавая внутри диспатчер, и теперь из любой точки можно подписаться как ( естевенно addEventListener кастомный метод ). Так например на часть событий я могу подписаться в одном классе, а на часть в другом, или даже выписывать одни и теже события в разных классах выполняя различные методы. Вариант два, так же статик, но передавать туда диспатчер типа
Но вариант 1, тоже не блещет, где то говорилось и обсуждалось , что статик в этом случае не есть тру. Так вот интересно ваше мнение, 1. имеет право на жизнь статик в данном контексте ? 2. если не статик, то как ? Архитектруа
__________________
Марк Tween |
|
|||||
|
Регистрация: May 2008
Адрес: москва
Сообщений: 63
|
написать класс, в котором будет единственная функция, она будет диспатчить события, а все остальные ваши классы наследуйте от написанного класса. Я бы так сделал, на мой взгляд данный вариант более логичен нежели вариант со статикой
ServerDispatcher.as package { import flash.display.Sprite; import flash.events.Event; public class ServerDispatcher extends Sprite { public function dispatcherServerEvent() { dispatchEvent(new Event(ServerClassEvents.SOME_EVENT)); } } } package { import flash.events.Event; public class SomeOtherClass extends ServerDispatcher { public function SomeOtherClass() { addEventListener(ServerClassEvents.SOME_EVENT,someFunction) } private function someFunction(e:Event):void { } } } примерно как то так))) Последний раз редактировалось Цветкофф; 12.02.2012 в 02:41. |
|
|||||
|
Та даже если уж в сторону статика смотреть то лучше синглтон крутить.
А так да, обсервер имхо лучший вариант. Хотя от синглтона мало отличаться будет в данном контексте. Но обсервер можно будет сделать не только для сервера а и вообще для рассылки чего-попало кому-попало. Тоже некая гибкость, хотя и контроллить сложно. С обсервером получится асинхронная структура, с недостаточностью опыта может оказаться фатальным.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Цитата:
__________________
Марк Tween |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ахах) Ну ужас весь от интерфейсов, которые необходимы только потому, что в классической схеме не используются события, а идет прямое оповещение (просто вызов интерфейсного метода у подписчиков).
Цитата:
Еще раз – если использовать готовую систему оповещений через события, то вопрос сводится к "статик или синглтон". Обсервер это альтернативный третий вариант. Я просто внес разнообразие в твой выбор. Хотя и так видно, что ты уже выбрал статик и размышляешь только о том, прятать диспатчер за статическим фасадом или выставить его в общий доступ. Если спрячешь, то получишь неясность с target/currentTarget (EventDispatcher не делегируется на Класс, только на интерфейс, а у Классов не может быть интерфейса))). Если это не пугает, то почему бы и нет. Прятать хорошо. Прятать "сервер" – тем более)) По крайней мере никакой злодей не заставит твой диспатчер разослать ложные сообщения.
__________________
Reality.getBounds(this); |
|
|||||
|
Что-то ничего не ясно. EventDispatcher и есть Observer.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Цитата:
Или в блоге каком-то, не помню. И уже не первый раз тебе отвечают, что диспатчер это просто одна из частных реализаций обсервера. Но отнюдь не сферический обсервер в вакууме.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| single , static |
|
|