2

我是 GWT 的新手,在很长一段时间后重新开始编程......我的问题是关于 GWT 中的 MVP 实现,我已经阅读了以下帖子,它们很有帮助,但我仍然有一些疑问

什么是 MVP 和 MVC,有什么区别? 您对构建 GWT 应用程序有什么建议?MVC、MVP 或自定义消息传递解决方案?

我认为MVP的GWT教程(http://code.google.com/webtoolkit/articles/mvp-architecture.html)也有contoller(AppController),并且一些响应是在Contoller级别而不是在演示者中管理的。所以我的问题是控制器在 MVP 模式实现中应该扮演什么角色?

我们应该从哪里发起异步服务器调用、presenter 或控制器,比如如果我必须保存记录,我应该从 Presenter 调用服务器函数(调用 DAO 并保存记录)还是应该使用事件总线和控制器发布事件对事件采取行动并调用服务器函数进行保存。

4

2 回答 2

0

回答你的最后一段,我会说你应该在演示者中这样做,如果有东西(一些按钮)在视图中应该这样做。Presenter 在逻辑上与视图有很强的联系(从技术上讲,它应该是弱联系的,只通过接口而不是实现)。如果您想保存某些未从视图中显式调用的操作的记录,我不会在演示者中执行此操作。

于 2010-09-06T16:27:48.570 回答
0

您链接到的 GWT 教程页面介绍了 AppController:

为了处理不特定于任何演示者而是驻留在应用程序层的逻辑,我们将介绍 AppController 组件。

所以它是多个 Presenter、View 和 Model(可能是多个 Model)之间的粘合剂。它还处理浏览器历史记录。可能还有一些不是特定于一位演示者的东西。

至于服务器调用:有几个选项,但我个人不会从视图中执行此操作,也不会从演示者执行此操作 - 我会使用模型侦听器。原因是,多个视图和演示者可以在一个模型上一起工作。当他们更改模型时,应该将更改发送到服务器。也许您不想立即执行此操作,但在发送之前收集一些更改。在这种情况下,您可以有一个由 AppController 设置的计时器。

于 2010-09-06T22:34:47.560 回答