如何使用 MVP 构建 GWT 应用程序

Posted

技术标签:

【中文标题】如何使用 MVP 构建 GWT 应用程序【英文标题】:How Build GWT Application using MVP 【发布时间】:2012-04-13 19:57:38 【问题描述】:

我在使用 java 和其他语言进行编程方面拥有丰富的经验。 我需要任何在使用 GWT 和 MVP 方面有丰富经验的人来解释:

视图包:解释视图类中应该包含什么。

客户端包:解释这里应该包含哪些 java 文件以及每个文件的好处。

服务器包:我认为这里所有的服务文件(RPC)。

Activity Package:解释一下这里的类有什么好处,我认为我们在这里将事件与视图类中的控件连接起来(我说的对吗?)。

Place Package:我需要非常了解这一点。

Clientfactory java 文件还有什么好处?

什么是事件总线?

什么是地点控制器?

请问您是否可以订购应逐个编码的文件?

提前谢谢你,

【问题讨论】:

这确实是一个懒惰的问题。这根本不符合 SO 的精神 - OP 要求提供免费的 GWT-MVP 培训课程。 【参考方案1】:

1) View 是一个带有指向其演示者的链接的小部件。它应该通知演示者应该处理的 ui 事件。

2) 视图、演示者、客户端(不与服务器端共享)模型、地点、活动、PlaceHistoryMapper、ActivityMapper。关于福利见下文。

你很了解演示者吗?根据您的问题,我假设您将其与活动混淆了。 1.1 ) Presenter 创建和管理视图,制作 rpc 和大部分“逻辑”内容。

3) 你说得对,服务器包只是一个java服务器逻辑。

4) 活动链接场所和演示者。我将在下面重新描述活动。

5) Place 具有名称、令牌和自己的 Tokenizer,它将其位置转换为令牌或其他方式。

6) 我没有使用 ClientFactory。我更喜欢使用 google-gin(guice 的 gwt 客户端版本)进行依赖注入

7) 事件总线是......我无法比官方 javadoc 更好地描述 :)

向相关方发送事件。通过允许对象交互而不直接依赖于彼此,并且不需要事件源来处理维护处理程序列表,从而简化了解耦。每个应用程序通常会有一个 EventBus,用于广播普遍感兴趣的事件。

8) PlaceController 知道您在哪里(在应用程序中:) 并且可能会更改当前位置。 (显然,它有 getWhere() 和 goTo(Place) 方法)

9) 首先,您需要编写应用程序的单例代码,例如 PlaceHostoryMapper 和 ActivityMapper。 PlaceHostoryMapper 通过隔离所有 PlaceTokenizer 来提供历史记录并将令牌转换为地点。 ACtivityMapper 隔离所有地点和活动,并提供第二个和第一个。

视图和演示者基于界面。接下来我会声明这样的接口。 然后写地方。然后您可以编写活动代码,因为您拥有演示者的位置和界面。 然后以任意顺序实现视图和演示者,将活动映射到 ActivityMapper 中的位置,并在 PlaceHistoryMapper 中注册 PlaceTokenizer。

我假设您现在有更多问题,请随时在 cmets 或通过我的个人资料中的联系人提问 :)

【讨论】:

以上是关于如何使用 MVP 构建 GWT 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

GWT + MVP4g+Ivy:编译错误

GWT 小部件与 MVP

对于 GWT GAE Java 应用程序,这种 GWT/RPC 安全方法的安全性如何?

如何处理会话超时异常(使用 MVP 地点和活动)?

使用 Mockito 的 GWT MVP 测试用例,包含活动和地点以及 GIN

Google Web Toolkit (GWT) EventBus 事件触发/处理