2014-07-24 50 views
7

我想用MVP模式实现我的下一个应用程序,所以我开始阅读一些关于应该如何实现的文章。对我来说,主要的问题是这种模式有不同的方法。有人说我们应该把活动当作一种看法,但其他一些活动应该是主持人。Android MVP - 活动应该是视图还是演示者?

作为一个视图的活动在这里描述:MVP Android 它是有道理的。但另一方面,我发现这个答案与几个upvotes https://stackoverflow.com/a/7609943和有人说,活动应该是一个主持人。

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

回答

2

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

+2

查看并不提示底层的实施细节。视图只是一个可以用很多方式实现的抽象(GWT视图,模拟视图,基于Android的视图)。我真的认为Android中的活动更接近View,因为活动倾向于知道实现细节(基础布局XML等)。在单元测试中,让Presenter成为一项活动,将您紧紧绑定到Android环境,而独立于视图层的独立主持人提供了更大的灵活性(您可以使用'mvn test'以这种方式轻松测试演示者)。 –

+0

那么你作为演讲者提议什么? –

+1

正如我上面所说的,主持人应该是一个视图层不可知论的中间人。例如,它可以是一个简单的类,它在最简单的情况下通过接口引用模型和视图,并且可以决定模型和视图之间的交互和工作流程。假设你有这样一个主持人,可以很容易地重用于不同的环境:Android,GWT等 –

8

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

7

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

​​

0

MVP的样品的术语查看这里超载,机器人视图比预期要使用的视图不同在MVP模式中。 View是一个应该由Activity/Fragment实现的接口。你可以看看Official Android MVP Examples

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

enter image description here

+0

由于你提到的文档“在这个版本的应用程序中,活动是创建并连接视图和演示者的整体控制器“。 – YTerle

相关问题