5

我终于开始“获得” GWT。在任何时候,PlaceChangeEvent都可以EventBus像这样在应用程序上触发 a:

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

这会将事件添加到总线,从而注册者ActivityManager将其收集起来并咨询其内部ActivityMapper以将其ActivityPlaceChangeEvent's关联Place

然后Activity(类似于 MVP/MVC 中的演示者或控制器对象)获取所需的任何数据(通过对服务器的 RPC 调用)并执行任何业务逻辑并配置最终视图(通常是Composite某种类型的)以显示。

只要我们谈论的是一个超级简单的 GWT 应用程序,它的主机页面上只有一个显示区域,那么就像我说的,我“明白”了它。

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

所以我问:

  1. ActivityMappers 应该有多细?是否只有一个应用程序范围内将所有sAppActivityMapper映射到所有ies,或者是否应该有某种层次结构/分解,您有多个映射器?(如果您对此的回答类似于“这取决于您的应用程序的需求”,那么请解释什么要求/需求推动了适当的粒度级别!)PlaceActivityActivityMapper
  2. 如果 aPlace表示您的应用程序中的 URL 令牌(为了使成为Place可收藏状态),那么当您有一个具有多个显示区域(D1、D2、D3)的更复杂的应用程序时会发生什么。一个 URL 令牌(即http://myapp.com/#token-for-some-new-place)如何映射到 D1、D2 和 D3?这不意味着ActivityMapper#getActivity必须能够返回一个活动列表(List<Activity>),其start(AcceptsOneWidget, EventBus)方法都会被调用吗?

感谢您在这里的任何帮助 - 代码示例总是很摇滚。

4

1 回答 1

5

APlace代表,嗯,一个地方。它回答了我从哪里来的存在主义问题?我在哪里?我要去哪里?.

对于给定的地方,显示给用户的屏幕可能很复杂,并且被划分为一堆显示区域。每个都由一个 管理ActivityManager,它询问一个给定位置使用ActivityMapper哪个Activity,使一切松散耦合(活动不(必须)知道它们在哪里被使用,在哪个地方,哪些其他活动同时运行, ETC。)

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

看:

于 2012-10-27T20:50:09.207 回答