1

我想知道如何使用 MVP 实现一个简单的登录案例。我的 MVP 框架只允许从视图触发事件,我不能从演示者触发事件。不知道这是好事还是坏事。我确实看到了它的优势,但简单的情况只是被额外的间接所破坏。

所以当我想实现简单的登录场景时,我有以下内容。

  • 登录演示者
  • 登录视图
  • 登录模型

那么当用户填写登录表单并点击登录按钮时会发生什么?

  1. 视图触发事件“登录点击”
  2. 演示者监听该事件并使用它的模型进行登录
  3. 如果登录成功,我必须再次调用视图以告知登录成功。
  4. 该视图触发另一个事件“登录成功”。
  5. 演示者和其他演示者现在显示另一个视图并关闭登录窗口。

从我的角度来看,成功事件的逐步视图实在是太多了......

我的框架是错误的,不允许我从演示者那里触发事件,还是这是 MVP 的必要之恶?

4

1 回答 1

1

每个框架都将定义自己的规则,以了解 View 如何准确地触发 Presenter,反之亦然。您将不得不四处挖掘,看看是否有任何其他框架看起来稍微容易一些。但是,总体努力可能会保持相似。

对于像登录这样的简单过程来说,这似乎需要付出很多努力,但在我看来,为了单元可测试性的好处,这种痛苦是值得的。

现在您可以通过模拟您的视图和模型来测试您的登录过程。Presenter 是否正确处理无效输入?如果登录不正确/正确,视图是否会得到正确的提示?现在,所有这些问题都可以通过使用模型和视图的模拟对象进行单元测试来回答。

只需确保您的 View(s) 和 Model(s) 被定义为接口。查看JMock等库以帮助您进行单元测试。

然后,想象一下这个框架对于更复杂的场景会有多么有用,比如处理客户的订单!

于 2012-08-02T10:57:07.243 回答