2

我已经阅读了很多在这里提出的 gwt-mvp 问题,但是由于我对这种设计模式完全陌生,所以我想问一些问题:

[1] Activity-Place 模式与 mvp 模式不同?

[2] 在 MVP 模式中,presenters 包含逻辑。现在小部件/控件的逻辑在活动中定义?

[3] CustomPlace 类是固定的(由 Eclipse 插件构建它们)或者我可以放置数据/方法吗?

[4] CustomView里面的Presenter接口有什么用?添加哪些数据/方法有意义?

[5] 我想构建一个应用程序,该应用程序将使用许多将保存到数据库中的数据结构。我在这里阅读了其他一些帖子,我将使 MVP 的模型部分存在于每个活动中。因此,我认为每次在启动时创建每个活动的数据结构并加载其值(如果需要从 db 加载),并在用户转到另一个视图后更新数据库。您如何看待这种方法?

4

2 回答 2

3
  1. 让我们从揭穿一个神话开始:活动/地点与 MVP无关。Places 是关于导航的,Activity 是关于“组件化”UI wrt Places 的。另一方面,MVP 是一种设计模式,它是关于如何组织代码的。

  2. 许多人将他们的活动用作他们的 MVP 演示者,但并未强制执行。GWT 团队正在尝试一种新方法,其中活动与演示者不同(mobilewebapp如果您想了解那里发生的事情,请在示例中进行工作)。您还可以让您的活动成为您的视图并使用“内部”演示者(类似于 Cell 小部件的工作方式)

  3. 地点或多或少是一个 URL。你可以在里面放任何你想要的东西。我建议让场所不可变:构建一个场所,goTo它利用它的属性来构建您的 UI。

  4. 那是关于MVP的。这只需要解耦您的视图和演示者,主要是为了使单元测试中的模拟更容易(这尤其是视图界面,​​但对于演示者来说并不多,除非为您的视图编写测试工具)。在某些情况下,您可能还希望对不同的演示者使用相同的视图;它们都将实现相同的接口,因此视图可以与它们对话。

  5. 关闭窗口/选项卡怎么样?我宁愿使用定期自动保存或显式保存按钮;并实施mayStop,以便在有未保存的更改时提示用户(类似于大多数桌面办公应用程序的工作方式 - 例如 MS Word 或 LibreOffice - 和 GMail,如果您在邮件草稿自动保存之前尝试导航)

于 2011-07-05T22:07:47.257 回答
2
  1. Activity-Place 是该模式的实现。Google 在 Google IO 中引入了 gwt-mvp 模式,但仅在大约一年后才将其实现作为 GWT 的一部分。

  2. 是 活动包含业务逻辑。不,小部件/控件通常不包含任何逻辑,它们只是根据用户操作触发事件。作用于这些事件的逻辑由用户编写并驻留在其他地方。

  3. 我不使用 Eclipse,所以不知道它生成的 Places。通常自定义 Places 可以包含自定义字段和方法。例如,它们可以包含自定义地点标记参数,即如果地点标记是“#place:id1”,那么您的自定义地点可能包含保存此参数的字段。

  4. 当 View 需要调用/访问 Activity 时,它通过 Activity 实现的 Presenter 来实现。例如,当用户在 for 中输入所有数据并按下提交时,您可以在 Presenter 中有一个名为 的方法submit(formData)

  5. 准备/加载数据activity.start(..)是一种正常的做事方式。如果大量使用特定活动,那么您可能会考虑在适当的情况下缓存数据。

于 2011-07-05T21:34:05.523 回答