GWT: детализация мест и ActivityMappers

Я наконец начинаю "получать" GWT. В любое время PlaceChangeEvent может быть запущен в приложении EventBus вот так:

History.newItem("token-for-some-new-place");

Это добавляет событие в автобус, в результате чего зарегистрированный ActivityManager подхватывает его и консультирует его ActivityMapper дать ему Activity связано с PlaceChangeEvent"s Place,

Activity (аналогично объекту презентатора или контроллера из MVP/MVC) затем получает все необходимые данные (через вызовы RPC к серверу), выполняет любую бизнес-логику и настраивает окончательное представление (обычно Composite какой-то) для отображения.

Пока мы говорим о сверхпростом GWT-приложении, которое имеет только одну область отображения на главной странице, то, как я уже сказал, я "получаю" его.

Теперь я задыхаюсь, что происходит, когда у вас есть приложение, содержащее несколько областей отображения (области, которые могут обновляться асинхронно друг от друга).

Поэтому я спрашиваю:

  1. Насколько гранулированы ActivityMapperдолжно быть? Есть только одно приложение AppActivityMapper который отображает все Placeсо всеми Activityили должны быть какие-то ActivityMapper иерархия / декомпозиция, где у вас есть несколько картографов? (И если ваш ответ на это что-то вроде "это зависит от потребностей вашего приложения", то, пожалуйста, объясните, какие требования / потребности определяют соответствующий уровень детализации!)
  2. Если Place представляет URL-токен в вашем приложении (для создания Place состояние закладки), что происходит, когда у вас более сложное приложение с несколькими областями отображения (D1, D2, D3). Как работает один URL-токен (т.е. http://myapp.com/#token-for-some-new-place) сопоставить с D1, D2 и D3? Разве это не значит ActivityMapper#getActivity должен был бы быть в состоянии вернуть список действий (List<Activity>) чья start(AcceptsOneWidget, EventBus) методы будут все обзванивать?

Спасибо за любую помощь здесь - примеры кода всегда потрясающие.

1 ответ

Решение

Place представляет, ну, место. Он отвечает на экзистенциальные вопросы, откуда я пришел?где я? и куда я иду?,

Для данного места экран, который отображается пользователю, может быть сложным и разделен на несколько областей отображения. Каждый управляется ActivityManager, который спрашивает ActivityMapper который Activity использовать для данного места, делая все слабо связанными (действия не должны (не должны) знать, где они используются, для какого места, какие другие действия выполняются одновременно и т. д.)

Таким образом, у вас не будет маппера, который возвращал бы список действий, но был бы список мапперов, каждый из которых возвращал одно действие.

Увидеть:

Другие вопросы по тегам