什么是Interactor?它如何适应MVP设计?使用交互器与将交互器代码放在演示者中有什么优点/缺点?
答案 0 :(得分:91)
MVP的存在是为了解决上帝活动问题(一个有太多行的活动/片段)。
虽然它不是强制性的(你可以用你想要的任何模式编写代码),但许多开发人员都认为MVP适合Android。它使您的源代码更清晰,可测试,可维护和健壮。
您可以将交互者视为“模型/控制器”。交互器将从数据库,Web服务或任何其他数据源中获取数据。获取数据后,交互器将数据发送给演示者。因此,在UI中进行更改。
在单独的类中使用交互器的优点是它将使您的类分离,从而使其更清晰和可测试。当然,您可以将交互器放在演示者内部类中,但有什么意义呢?将交互操作员放在演示者中的缺点是它会使您的演示者课程更大,更难以阅读和管理。
更新: 当然这只是一种过度简化,如果你想深入挖掘,你可能会看到fernando cejas blog或antonio leiva blog
答案 1 :(得分:28)
Interactor是一个将Domain Layer与Presentation Layer分开的类。 简单来说,它提供了单独编写业务逻辑的方法,而不是用于操作UI的代码(通过将数据绑定到UI /动画/导航)。
因此,Interactor是Presenter / ViewModel和Repository模式之间的中介。
我没有在MVP中使用Interactor模式,但我在MVVM中使用过它。 Interactor可以互换地用于UseCases。
例如,让我们将获取类别的用例显示在列表中。
请注意,在此过程中可以避免使用Interactor,因此可以通过 Repository-> Presenter进行通信,而不是像 Repository-> Interactor-> Presenter 那样使用数据流。 这样。此处Presenter也将成为Presentation / Domain层的一部分。就像我上面说的那样,Interactor充当这两层的分隔符。
这些是一些简明抄写的博客,用于解释这个概念以供参考
我希望这能帮助您更好地理解Interactor的作用
答案 2 :(得分:8)
Interactor包含应用程序的用例,这意味着它将包含项目业务域的所有实现。
以下是关于Architecturing Android Applications, using the MVP pattern.的非常精心组织的文章,我强烈建议您学习。
我还创建了一个名为 JuicyInsta 的Android应用程序,使用MVP模式和Instagram API,which is shared here on github.
答案 3 :(得分:3)
我个人使用的View,Present和Interactor对我来说与模型不同。
您可以将 Interactor视为具有从数据库,服务器等检索数据的有用方法的类。获得数据后,您可以在交互器中填充模型并将其返回给Presenter。
E.G。您可以使用LoginInteractor创建Asynctask来对用户进行身份验证,然后使用收到的数据填充UserModel。