
29.03.2013, 11:16
|
|
Регистрация: Nov 2010
Сообщений: 497
|
А в чем вопрос? Да, есть очень похожее решение. Называется message bus. Отличается от вашего только тем, как именно отправляет начальное сообщение компонент. В классическом варианте компонент имеет ссылку на шину (bus) и прямо в нее отправляет сообщение (а не отправляет событие наверх). Это обычно проще (не нужно поддержку EventDispatcher реализовывать).
Для клиентских приложений (flash, desktop application) тоже может быть применимо.
А вот в вашем примере я бы не ButtonManager к шине прикручивал, а сами кнопки. Т.е. ButtonManager так же отправляет событие "fullscreenButtonPressed" и уже сама кнопка получает и обрабатывает событие. При чем там menu holder? Наверное, концептуально правильнее было бы даже так: Кнопка "фуллскрин" отправляет событие "request fullscreen". Screen manager получает и обрабатывает событие, отправляет новое - "set fullscreen mode". Его получает кнопка fullscreen (среди других обработчиков) и меняет свое состояние. Или менять взаимодействие между button manager и кнопками напрямую (хранить в button manager нужные ссылки).
|