![]() |
Как лучше организовать подписку на событие группы ф-ций?
Вот, интересует такой вопрос: Нужно рассылать одно и то же событие объектам, потомкам объектов, разным группам объектов и т.д. Какая схема предпочтительнее с точки зрения архитектуры\производительности?
схема 1: Код:
генератор событияКод:
генератор события |
считаю, что "схема 1"..
потому что, и читабельность лучше, и нету запутанных ссылок. |
Какого рода объекты?
|
если заранее не известно какой именно объект должен обработать событие, есть симпатичный паттерн "цепочка обязанностей" (Chain of Responsibility)
|
Вобщем, чтобы немного прояснить ситуацию:
Генератор события - класс Плеер, он генерит фреймЧендж(номер кадра). А подписать на это нужно: - класс заведующий абстракным представлением того, что сейчас проиcxодит в плеере. - слои (уровни) плеера, которые в свою очередь могут содержать по нескольку объектов, которым тоже это событие нужно, но, мало того, у них еще могут быть общие для нескольких элементов транзишены/эффекты изменяющиеся по ходу проигрывания. - элементы интерфейса осуществяющие и отображающие плейбек ну и еще несколько менее значимых объектов, типа класса передающего это же событие в ЖС и т.п. Про Chain of Responsibility поищу. Спасиб. Синхронность получения событий может иметь очень принципиальное значение... |
Насколько я понимаю, в описанной вами ситуации можно применить только схему 2.
Потомучто визуальные элементы группируются в блоки. А если к каждому элементу отдельно обращаться то это совсем не ООПшно |
Да, но тут возникает такой вопрос:
по сути, раздача события = последовательный вызов функций. Функции связанные с рендерингом могут выполнятся долго... Вопрос, на сколько независимо события поступают к разным объектам? Т.е. если одно событие запустит долго выполняющуюся функцию, когда вызовуться следующие подписанные на него функции? |
в pureMVC framework это классно реализовано...советую посмотреть
|
| Часовой пояс GMT +4, время: 11:51. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.