GWT:场所和ActivityMappers的粒度

5 java mvp gwt gwt-activities gwt-places

我终于开始"获得"GWT了.在任何时候,PlaceChangeEvent都可以在应用程序上触发EventBus:

History.newItem("token-for-some-new-place");
Run Code Online (Sandbox Code Playgroud)

这增加了该事件的总线,因此注册ActivityManager舀起来,并咨询其内部ActivityMapper给它Activity与相关PlaceChangeEventPlace.

所述Activity(类似于从MVP/MVC演示者或控制器对象),则获得所需要的任何数据(通过RPC调用向服务器),并且执行任何业务逻辑和配置的最终视图(通常是Composite某种形式的)来显示.

只要我们谈论的是一个超级简单的GWT应用程序,它的主页上只有一个显示区域,那么就像我说的那样,我"得到"它.

我现在窒息的地方是当你有一个包含多个显示区域的应用程序(可以彼此异步更新的区域)时会发生什么.

所以我问:

  1. ActivityMapper应该是多么精细?是否有一个应用程序范围AppActivityMapper将所有Places 映射到所有的Activity,或者是否应该有某种ActivityMapper层次结构/分解,你有多个映射器?(如果您对此的回答类似于" 这取决于您的应用程序的需求 ",那么请解释哪些要求/需求驱动适当的粒度级别!)
  2. 如果a 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)方法将被调用吗?

感谢您的帮助 - 代码示例总是摇滚.

Tho*_*yer 5

A Place代表一个地方.它回答了我来自哪里的存在问题,我在哪里?我在哪里去?.

对于给定的地方,向用户显示的屏幕可能很复杂,并且被分成一堆显示区域.每一个都由一个人来管理ActivityManager,它会询问ActivityMapper哪一个Activity地方使用,使一切松散耦合(活动不(必须)知道他们被使用的地方,哪个地方,其他活动同时进行,等等.)

因此,您将不会有一个映射器返回一个活动列表,而是一个映射器列表,每个映射器返回一个活动.

看到:

  • 不确定我理解你在这里说的是什么,但我的初步答案是:所有显示区域同时发生变化(这并不意味着它们*有*会改变,但你可以让它们中的一些显示相同的活动至于另一个地方,但仍然被要求显示当前地点的活动).这里是StackOverflow,菜单栏(带有徽标),右上角的"标记"部分,"社区公告",广告和下面的"相关"部分,最后是带有问题和答案的主要区域; 1 URL(地点)决定每个区域(活动)中出现的内容. (2认同)