![](/img/trans.png)
[英]Should we check for view visibility in Presenter or Activity in MVP pattern?
[英]Android MVP - should an Activity be a View or Presenter?
我想用MVP模式实现下一个应用程序,因此我开始阅读一些有关应如何实现的文章。 对我来说,主要问题是这种模式有不同的方法。 有人说我们应该将活动视为一种观点,但另一些人则认为活动应该是演示者。
这里将活动作为视图进行了描述: MVP Android ,这很有意义。 但是从另一方面来说,我发现这个答案时有一些支持https://stackoverflow.com/a/7609943 ,有人说活动应该是演讲者。
有没有人有这种模式的经验?
片刻之后,我认为应该将“活动”视为“视图”。 如果我们将业务逻辑与活动分开,则很容易用片段或视图替换活动。 我们甚至可以采用我们的模型和演示者,并在桌面应用程序中使用它们,只需向它们添加新的视图即可。 为了测试目的,最好将演示者创建为普通对象,而不是活动。
活动非常接近您的布局,因此应该是一个视图。 并且您的业务逻辑应该在您的Activity创建的Presenter中。 要了解有关MVP的更多信息,请查看- 适用于Android的MVP
我认为将Activity视为演示者是安全的。 视图可以视为布局XML文件。 如您在上面发布的答案中所述,演示者是与模型以及视图直接相关的事物。 在活动中,您可以连接到视图,并保持在视图和模型之间的中间状态,这实际上是Presenter的功能。 它从视图获取输入事件,并设置从模型接收的值以显示在视图中。
看看G +社区Android MVP ,尤其是示例https://github.com/spengilley/ActivityFragmentMVP
这是一个Passive View模式实现,最适合在测试中使用。
活动应该是视图,因为它是渲染图形的地方。 演示者和模型可以用纯Java编写并易于测试。
查看此AndroidMvc / Mvp框架
https://github.com/kejunxia/AndroidMvc
也可以在这里查看MVP示例https://github.com/kejunxia/AndroidMvc/tree/master/samples/simple-mvp
在确定是否应将活动视为视图或演示者组件时,我们必须遵循“单一责任原则”。
将业务逻辑与活动分离几乎是不可能的。 造成这种情况的一个主要原因是
活动扩展了上下文。
从功能上讲,上下文对象提供对第三方应用程序可以使用的大多数平台功能的访问。
由于Activity是Context的子类,因此我们的应用程序使用其API来控制平台功能和资源的子集。 使用这些功能和资源的逻辑就是我们的业务逻辑。 因此,无论我们多么努力,我们都无法将业务逻辑与活动完全分开。
由于我们无法将业务逻辑与活动分开,因此我们将其与所有UI逻辑分开。 这不是一项琐碎的任务,但是从长远来看,这是值得的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.