Android MVP:什么是Interactor?

什么是交互者? 它如何适合MVPdevise? 使用交互器与将交互器代码放在演示者中有什么优点/缺点?

Solutions Collecting From Web of "Android MVP:什么是Interactor?"

MVP的存在是为了解决上帝的活动问题(活动/片段有太多的路线)。

尽pipe这不是强制性的(你可以用任何你想要的模式进行编码),但许多开发人员都认为MVP适用于Android。 它使您的源代码更清洁,可testing,可维护和强大。

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

在一个单独的类中使用交互器的好处是,它将解耦你的类,从而使它更清洁和可testing。 当然,你可以把交互者放在主讲者的内部,但是重要的是什么? 将交互器放在演示者中的缺点是会使演讲者的课程变得更大,相对更难以阅读和pipe理。

更新:当然,这只是一个过于简化,如果你想深入挖掘,你可能会看到fernando cejas博客或antonio leiva博客

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

这是一篇关于构buildAndroid应用程序的非常精心组织的文章,使用MVP模式。 ,我强烈build议你学习。

此外,我创build了一个名为JuicyInsta的Android应用程序,使用MVP模式和Instagram API, 这是在github上共享的。

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

您可以将Interactor视为一个有用的方法来从数据库,服务器等中检索数据 。 获取数据后,您可以在Interactor中填充模型,并将其返回给演示者。

EG您可以有一个LoginInteractor创build一个Asynctask来authentication用户,然后用收到的数据填充UserModel。

Interactor是一个将“图层”与“图层”分开的类。 简单地说,它提供了分别编写业务逻辑的方法,而不是用于处理UI的代码(通过将数据绑定到UI /animation/导航)。

所以Interactor是Presenter / ViewModel和Repository模式之间的中介。

我没有在MVP中使用Interactor模式,但我已经在MVVM中使用它。 交互器可以互换用于UseCases。

例如,让我们拿取类别的用例来显示在列表中。

  • View(Activity / Fragment)会调用Presenter / ViewModel的方法来获取categoryList。
  • 然后演示者将调用交互者的方法来获取categoryList
  • Interactor将调用Repository的(CategoryRepository)方法来获取categoryList
  • 存储库将有逻辑来决定是从Web服务(远程数据源)或从数据库存储(本地数据源)或从caching(临时存储 – 可以在存储库类中可变)中获取类别。
  • 仓库将返回categoryList(从选定的数据源获取)到Interactor
  • Interactor将处理categoryList(某些格式等)并将其发送给Presenter。 如果不需要处理,交互者可以直接发送列表给Presenter
  • Presenter将以categoryList作为参数调用View的方法
  • 视图将显示带或不带animation的categoryList

请注意,在这个过程中,可以避免使用Interactor,而不是使用像Repository-> Interactor-> Presenter这样的数据stream,通过这种方式可以通过Repository-> Presenter进行通信。 这里Presenter也将成为Presentation / Domain层的一部分。 就像我上面说的,Interactor充当了这两层的分隔符。

这些是一些简明扼要的博客来解释这个概念以供参考

  • 干净的架构与- mvvmi
  • Android的MVP架构扩展与-交互器
  • 架构,Android的最干净的方式

我希望这会帮助你更好地理解Interactor的angular色