Android MVP - 活动应该是视图还是演示者?

Gre*_*reg 7 mvp android design-patterns

我想用MVP模式实现我的下一个应用程序,所以我开始阅读一些关于如何实现它的文章.对我来说,主要的问题是这种模式有不同的方法.有些人说我们应该将活动视为一种观点,而另一些人则认为活动应该是一种主持人.

此处描述了作为视图的活动:MVP Android ,它是有道理的.但另一方面,我发现这个答案有几个upvotes /sf/answers/532696041/,有人说活动应该是主持人.

有没有人有这种模式的经验?

Gre*_*reg 10

经过一段时间的思考,我认为Activity应被视为一个视图.如果我们将业务逻辑与活动分开,那么用片段或视图替换活动将很容易.我们甚至可以使用我们的模型和演示者,并在桌面应用程序中使用它们,只需添加新视图即可.对于测试目的而言,最好将演示者创建为普通对象,而不是活动.


Aji*_*ngh 7

活动非常接近您的布局,因此它应该是一个视图.您的业​​务逻辑应该在您的Activity创建的Presenter中.要了解更多有关MVP的信息,请查看 - MVP for android

在此输入图像描述


Har*_*nan 3

我认为将 Activity 视为 Presenter 是安全的。View可以被认为是布局XML文件。正如您在上面发布的答案中所述,演示者与模型和视图有直接联系。在活动中,您连接到视图,并充当视图和模型之间的中介,这实际上是演示器的功能。它从视图获取输入事件,并将从模型接收到的值设置为在视图中显示。

  • View 不建议底层的实现细节。视图只是一个抽象,可以通过多种方式实现(GWT 视图、模拟视图、基于 Android 的视图)。我确实认为 Android 中的 Activity 更接近 View,因为 Activity 往往了解实现细节(底层布局 XML 等)。在单元测试中,让 Presenter 成为一个 Activity,将您与 Android 环境紧密结合在一起,而独立的视图层无关的 Presenter 则提供了更大的灵活性(您可以通过这种方式使用“mvn test”轻松测试您的 Presenter)。 (2认同)