GWT: детализация мест и ActivityMappers
Я наконец начинаю "получать" GWT. В любое время PlaceChangeEvent
может быть запущен в приложении EventBus
вот так:
History.newItem("token-for-some-new-place");
Это добавляет событие в автобус, в результате чего зарегистрированный ActivityManager
подхватывает его и консультирует его ActivityMapper
дать ему Activity
связано с PlaceChangeEvent
"s Place
,
Activity
(аналогично объекту презентатора или контроллера из MVP/MVC) затем получает все необходимые данные (через вызовы RPC к серверу), выполняет любую бизнес-логику и настраивает окончательное представление (обычно Composite
какой-то) для отображения.
Пока мы говорим о сверхпростом GWT-приложении, которое имеет только одну область отображения на главной странице, то, как я уже сказал, я "получаю" его.
Теперь я задыхаюсь, что происходит, когда у вас есть приложение, содержащее несколько областей отображения (области, которые могут обновляться асинхронно друг от друга).
Поэтому я спрашиваю:
- Насколько гранулированы
ActivityMapper
должно быть? Есть только одно приложениеAppActivityMapper
который отображает всеPlace
со всемиActivity
или должны быть какие-тоActivityMapper
иерархия / декомпозиция, где у вас есть несколько картографов? (И если ваш ответ на это что-то вроде "это зависит от потребностей вашего приложения", то, пожалуйста, объясните, какие требования / потребности определяют соответствующий уровень детализации!) - Если
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
использовать для данного места, делая все слабо связанными (действия не должны (не должны) знать, где они используются, для какого места, какие другие действия выполняются одновременно и т. д.)
Таким образом, у вас не будет маппера, который возвращал бы список действий, но был бы список мапперов, каждый из которых возвращал одно действие.
Увидеть: