Показать сообщение отдельно
Старый 29.03.2013, 12:46
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 4  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
MenuHolder нужен чтобы принимать сообщения от главного объекта, и спускать ниже - гланый объект не знает, что есть какие-то кнопки, они зарегистрированы в холдерах.
Это можно решить как раз глобальной (общей) шиной сообщений. Т.е. все кнопки зарегистрированы в ней. Кнопки все равно знают свой id (события то отправляют да и им доставляют сообщения по этому id) и могут реагировать на сообщения, специально отправленные для "кнопки с указанным id". Причем сообщения будут именно уровня кнопок (set enabled/set disabled). Примерно то же, что вы предлагаете, только механизм доставки не "по дереву", а через общую шину.

Или можно оставить и как у вас - "локальную" шину для меню, при этом транслировать сообщения из "глобальной" шины в "локальную". Подход удобен для объектов с различным временем жизни. Например, для какого-то диалога временно подписать его на шину, а потом отписать.

Мои замечания касаются даже не столько идеологии (там все нормально), а технической реализации. Чтобы не писать отдельно "диспетчеризацию" для MenuHolder, подобную же диспетчеризацию - для диалогов и т.п. А чтобы можно было взять "message bus" и "message bus translator", например, и использовать везде их. В общем, на это все нужно в коде смотреть.