Android MVP:什么是Interactor?

2021/01/09 22:51 · java ·  · 0评论

什么是交互器?它如何适合MVP设计?与使用交互器代码放入演示者相比,使用交互器的优缺点是什么?

MVP可以解决上帝的活动问题(活动/片段行太多)。

尽管它不是强制性的(您可以按所需的任何模式进行编码),但许多开发人员都同意MVP适用于Android。它使您的源代码更整洁,可测试,可维护且稳定。

您可以将交互器视为“模型/控制器”。交互器将从您的数据库,Web服务或任何其他数据源中获取数据。获取数据后,交互器将数据发送给演示者。因此,在您的UI中进行更改。

在单独的类中使用交互器的优点是,它将使您的类解耦,从而使其更干净和可测试。当然,您可以将交互器放入演示者内部类中,但有什么意义呢?将交互器放置在演示者中的缺点是,这会使您的演示者类变得更大,并且相对难以阅读和管理。

更新:当然,这只是过分简化,如果您想更深入地了解,您可能会看到fernando cejas博客antonio leiva博客

交互器是将域层和表示层分开的一类。简而言之,它提供了一种方法来编写业务逻辑,而不是使用用于操纵UI的代码(通过将数据绑定到UI /动画/导航)来编写业务逻辑。

因此,Interactor是Presenter / ViewModel与存储库模式之间的中介。

我没有在MVP中使用Interactor模式,但是在MVVM中使用了它。Interactor可以互换用于UseCases。

例如,让我们以获取类别的用例显示在列表中(在下面的示例中,Presenter代表MVP,ViewModel代表MVVM模式)。

  • View(活动/片段)将调用Presenter / ViewModel的方法来获取categoryList。
  • 然后Presenter / ViewModel将调用交互器的方法以获取categoryList
  • Interactor将调用存储库的(CategoryRepository)方法来获取categoryList
  • 存储库将具有决定从Web服务(远程数据源)还是从DB存储(本地数据源)还是从缓存(临时存储-可以在Repository类中更改)中获取类别的逻辑。
  • 存储库将categoryList(从选定的数据源获取)返回到Interactor
  • Interactor将处理categoryList(某些格式等)并将其发送到Presenter / ViewModel。如果不需要处理,Interactor可以直接将列表发送到Presenter / ViewModel
  • Presenter / ViewModel将使用categoryList作为参数调用View的方法
  • 视图将显示带有或不带有动画的categoryList

请注意,在此过程中可以避免使用Interactor,因此与其使用像Repository-> Interactor-> Presenter / ViewModel这样的数据流,可以通过Repository-> Presenter / ViewModel进行通信Presenter / ViewModel在这里将是Presentation以及Domain层的一部分。就像我上面说的,Interactor充当这两层的分隔符。

这些是一些简明扼要的博客,解释了此概念以供参考

我希望这可以帮助您更好地理解Interactor的角色。快乐编码!

Interactor包含应用程序的用例,这意味着它将包含项目业务领域的所有实现。

这是一篇关于使用MVP模式架构Android应用程序的井井有条的文章,我强烈建议您学习。

我还使用MVP模式和Instagram API创建了一个名为JuicyInsta的android应用程序,该应用程序在github上共享。

我个人使用的View,Present和Interactor对我而言与模型不同。

您可以将Interactor视为具有有用方法的类,该方法可以从数据库,服务器等中检索数据获得数据后,您可以在Interactor中填充模型并将其返回给Presenter。

例如,您可以有一个LoginInteractor,它创建一个Asynctask来对用户进行身份验证,然后使用接收到的数据填充UserModel。

本文地址:http://java.askforanswer.com/android-mvpshenmeshiinteractor.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!