![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Всем привет
Вопрос возник при реализации собственной модели на JAVA Принцип везде одинаков - есть EventDispatcher, который содержит список тех, кого надо уведомить. Вернее не список, а HashMap, где ключи - это строки (имена событий), а значения - это массивы обработчиков. И есть сами обработчики. При вызове dispatchEvent(evt:Event) наш EventDispatcher проходит по всему списку обработчиков и вызывает в них... А вот и вопрос - что он в них вызывает? Ведь класс может быть динамическим. Значит при вызове dispatchEvent() мы у каждого объекта проверяем наличие нужного метода? Плюс мы должны проверить, от таких ли параметров вызывается метод? плюс - тот ли тип данных он возвращает? ... Тогда это жутко медленно должно быть =) Получается, что вместо dispatchEvent нужно пользоваться прямым вызовом метода. Или я неправильно понимаю событийную модель в AS3?
__________________
...вселенская грусть |
|
|||||
|
strange mood
|
Ежели в качестве слушателя передается ссылка на метод динамического объекта, которого может и не быть, то при попытке вызова получим рантайм еррор. Если количество и тип аргументов не соответствуют ожидаемым, опять же получаем ошибку. Все это обрабатывается на уровне виртуальной машины, по-моему тут никаких проблем.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
стервочка (я мужик)
|
Цитата:
|
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
лучше посмотри на событийную модель с# - там круче. нет строковости - строгая типизация - автокомплит и вообще..
__________________
Отряд Котовскага |
|
|||||
|
Цитата:
Цитата:
__________________
...вселенская грусть |
|
|||||
|
strange mood
|
Цитата:
Можно либо положиться на вм, которая ругнется при попытке выполнить null вместо метода, либо проверять валидность обработчика самому при подписывании.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
стервочка (я мужик)
|
GAIKER, тогда я Вас разочарую ещё разок:
ога. а я думал, что при попытке обращения.
|
|
|||||
|
Modus ponens
|
А еще лучше посмотреть в Qt, а потом посмотреть в Haskel или Common Lisp
A вообще, это вечная тема для обсуждений, т.как в СРР темплейты не ахти - не хочется плодить кучи классов, а с другой стороны, если хочется с параметрами, то где-то птийдется терять типизацию, а если не терять типизацию, то тогда терять производительность, а если не терять, то это только либо в чисто функциональных языках, либо в мультипарадигменных, которые позволяют функциональный подход ![]() ЗЫ C# - мультипарадигменный, как и CL.
__________________
Hell is the possibility of sanity |
|
|||||
|
strange mood
|
С каких пор? Объект динамический, при обращении к несуществующему свойству преспокойно вернет null без всяких ошибок.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
стервочка (я мужик)
|
ну я неправильно выразился. но Вы ещё более неправильно это сделали =) я имел ввиду при передачи параметра. то есть прямо там где написано и будет ошибка. до вызова дело просто не дойдёт. приложение упадёт в addEventListener.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|