使用 Android MVP Clean Architecture 实现交互器

Realizing Interactors with Android MVP Clean Architecture

我目前正在构建一个 android 应用程序,并希望它基于 "clean architecture",类似于以下作者的建议:

当前架构:

视图(片段)<-> 演示者 <-> 交互器 <-> 存储库

在当前设计中,每个显示有 1 个交互器(一个显示可能包含多个片段,例如 ViewPager 有 30 个相同类型的片段),每个片段有 1 个呈现器。 Presenter 和 Interactor 没有框架依赖性,便于测试。

我主要关心的是 Interactors/UseCases 的实现及其与 Presenters (MVP) 或 ViewModel (MVVM) 的关系。

问题:

计划让交互器首先获取显示所需的所有业务对象 (BO)。 提取是从数据层同步完成的,每个接收到的 BO 都指向 Presenter。 这会导致延迟,直到所有数据都显示在视图中。

此外,它会注册它感兴趣的 BO 的更新(与之前获取的相同),以通过 Presenter 持续更新视图。


因此,我正在寻找有关如何在我的案例中设置交互器的指南。 上面提到的实现有一个任务,完成它然后完成,Interactor 后台线程可能会关闭。

在我的例子中,Interactor 从数据层注册更新并等待处理它们,然后将数据发布到 Presenter UI 线程,因此只要有一个 Presenter 正在监听就一直存在。

这个功能是不同的,我正在寻找一个好的实践来让它与 "clean architecture" 一起工作。

所以如果我理解你的问题,你的担忧或疑虑就来了,因为你的交互器不会执行任务然后完成,而是会被订阅或监听直到操作完成。

在我看来完全没问题,一个Interactor实现了一个用例,在你的程序中那个异步请求就是一个用例,不管它是花时间还是异步任务还是同步操作都无所谓.

Presenter 实例化Interactor 仍然是一个用例,完成后返回操作结果。只要您保持模块化,并且 Presenter 和 Interactor 不与直接依赖性耦合,而是通过间接方式进行通信,那就完全没问题了。