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

Android MVP-活动应该是视图还是演示者?,android,design-patterns,mvp,Android,Design Patterns,Mvp,我想用MVP模式实现我的下一个应用程序,所以我开始阅读一些关于如何实现它的文章。对我来说,主要的问题是对这种模式有不同的方法。有人说我们应该把活动当作一种观点,但也有人说活动应该是一个展示者 此处描述了作为视图的活动: 这是有道理的。但另一方面,我通过几次投票找到了这个答案,有人说这个活动应该是一个演讲者 有人有过这种模式的经验吗

我想用MVP模式实现我的下一个应用程序,所以我开始阅读一些关于如何实现它的文章。对我来说,主要的问题是对这种模式有不同的方法。有人说我们应该把活动当作一种观点,但也有人说活动应该是一个展示者

此处描述了作为视图的活动: 这是有道理的。但另一方面,我通过几次投票找到了这个答案,有人说这个活动应该是一个演讲者


有人有过这种模式的经验吗经过片刻思考后,我认为活动应被视为视图。如果我们将业务逻辑与活动分开,那么就很容易用片段或视图替换活动。我们甚至可以在桌面应用程序中使用我们的模型和演示者,只需为它们添加新的视图。出于测试目的,最好将presenter创建为普通对象,而不是活动。

看看G+社区,尤其是示例


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

活动非常接近您的布局,因此它应该是一个视图。您的业务逻辑应该位于活动创建的演示者中。 要了解更多关于MVP的信息,请查看-


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

请参阅此AndroidMvc/Mvp框架

也可以在这里查看MVP示例
这里的术语视图是重载的,android视图与MVP模式中应该使用的视图不同。视图是一个应该由活动/片段实现的接口。你可以看一看

我建议从最开始的时候开始。这是一个来自页面的流程


在决定活动是视图还是演示者组件时,我们必须遵循单一责任原则

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

活动扩展了上下文

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

因为活动是上下文的子类,所以我们的应用程序使用它的API来控制平台的一部分功能和资源。使用这些特性和资源的逻辑就是我们的业务逻辑。因此,无论我们如何努力,我们都无法将业务逻辑与活动完全分离


因为我们不能将业务逻辑与活动分开,所以我们应该将所有UI逻辑与之分开。这不是一项琐碎的任务,但从长远来看,它非常值得付出努力。

View不建议潜在的实现细节。视图只是一种可以通过多种方式实现的抽象(GWT视图、模拟视图、基于Android的视图)。我真的认为Android中的活动更接近视图,因为活动倾向于了解实现细节(底层布局XML等)。在单元测试中,让演示者成为一个活动,将您与Android环境紧密联系在一起,而独立的视图层不可知演示者则提供了更大的灵活性(您可以使用
mvn test
以这种方式轻松地测试演示者)。那么,作为演示者,您有何建议?正如我上面所说的,演示者应该是视图层不可知的中间人。例如,它可以是一个简单的类,在最简单的情况下通过接口引用模型和视图,并且可以指定模型和视图之间的交互和工作流。假设您有这样一个演示者,可以轻松地在不同的环境中重复使用:Android、GWT等。由于您引用的文档“在这个版本的应用程序中,活动是创建和连接视图和演示者的总体控制器”。您至少应该提一下您从何处复制的文章。这是