альтернатива пользовательским событиям
Уважаемые знатоки, подскажите такой теоретический вопрос по пользовательским событиям (ПС).
Для создания ПС мы делаем класс, допустим GameOver extends EventDispatcher и в конце игры делаем так Код AS3:
Код AS3:
2.Либо прослушивать флажок о конце игры в EnterFrame, ведь по сути слушатель ПС konec.addEventListener(GameOver.GAME_OVER, konecListener), также потребляет память каждый кадр? В чем смысл использования ПС простыми словами? Спасибо |
1. Кривая архитектура приложения.
2. Не оптимально слушать в каждом кадре смену флажка. Цитата:
|
Представь, у тебя 150 классов, 100 из них надо уведомить об окончании игры, что будешь делать?
|
Цитата:
Добавлено через 43 секунды Цитата:
|
События нужны, для обеспечения принципа слабой связанности компонентов программы, сокрытия кода и инкапсуляции. И это вопрос об архитектуре приложения в целом, а не о конкретном кейсе. Проще в частном случае, не означает проще в целом. В целом может быть сложнее. Код может превратиться в спагетти, т.к. части будут спутаны друг с другом.
Слушатель "не слушает". Это обработчик события - он "обрабатывает" событие, которое ему передаётся. |
Цитата:
|
Цитата:
- Для избежания ошибок. В удалённом объекте, даже если на него не осталось ссылок, слушатели продолжат работать. Из-за этого возможны ошибки этапа выполнения. |
Цитата:
Добавлено через 2 минуты Пока я для себя сделал вывод, что преимущество использования пользовательского события, как сказал Udaaff - для обеспечения принципа слабой связанности компонентов программы, сокрытия кода и инкапсуляции. Т.е. для небольшого приложения допустимо использовать другие способы. |
Цитата:
GameOver extends flash.events.Event |
Слушатели не "слушают" ничего каждый кадр.
Они просто посредники между двумя классами. А удаляют их потому, что GC не может удалить ненужный объект из памяти, если к нему привязан слушатель. Как, в принципе, и говорили выше. |
Часовой пояс GMT +4, время: 22:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.