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

时间:2014-07-24 09:54:36

标签: android design-patterns mvp

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

此处描述了作为视图的活动:MVP Android  这是有道理的。但另一方面,我发现这个答案只有一些赞成https://stackoverflow.com/a/7609943而且有人说活动应该是主持人。

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

7 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:7)

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

enter image description here

答案 2 :(得分:2)

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

答案 3 :(得分:1)

查看G +社区Android MVP,特别是样本https://github.com/spengilley/ActivityFragmentMVP

这是一种被动视图模式实现,最适合在测试中使用。

答案 4 :(得分:0)

活动应该是视图,因为它是渲染图形的地方。演示者和模型可以用纯java编写,并且可以轻松测试。

请参阅此AndroidMvc / Mvp框架

https://github.com/kejunxia/AndroidMvc

另请参阅此处的MVP示例 https://github.com/kejunxia/AndroidMvc/tree/master/samples/simple-mvp

答案 5 :(得分:0)

术语View在这里重载,android视图与应该在MVP模式中使用的视图不同。 View是一个应该由Activity / Fragment实现的接口。您可以查看Official Android MVP Examples

我建议从basic one开始。这是来自页面的流程。

enter image description here

答案 6 :(得分:0)

我们必须遵循单一责任原则,在决定其他活动应该是视图或演示者组件时。

将业务逻辑与活动分开几乎是不可能的。其中一个重要原因是

活动扩展了上下文。

从功能上讲,Context对象提供对第三方应用程序可以使用的大多数平台功能的访问。

由于Activity是Context的子类,我们的应用程序使用其API来控制平台的一部分功能和资源。使用这些功能和资源的逻辑是我们的业务逻辑。因此,无论我们如何努力,我们都无法将业务逻辑与活动完全分开。

由于我们无法将业务逻辑与Activities分开,因此我们将所有UI逻辑与它分开。这不是一项微不足道的任务,但从长远来看,这是非常值得的。