我目前正在构建一个android应用程序,并希望以“干净的架构”为基础,类似于以下作者所建议的那样:
当前架构:
查看(片段)演示者交互器存储库
在当前设计中,每个显示器有1个交互器(一个显示器可能包含多个片段,例如ViewPager,其中有30个相同类型的片段),每个片段1个演示者。 Presenter和Interactor没有框架依赖关系,可以轻松测试。
我主要关心的是Interactors/UseCases的实现及其与Presenters(MVP)或ViewModel(MVVM)的关系。
问题:
计划让Interactor首先获取显示所需的所有业务对象(BO)。
从数据层同步获取数据,并将每个接收到的BO定向到Presenter。
这会导致延迟,直到 View 中显示所有数据。
此外,它为感兴趣的BO注册更新(与之前获取的BO相同),以通过Presenters连续更新 View 。
因此,我正在寻找有关在我的情况下如何设置交互器的指南。
上面提到的实现只有一项任务,先完成工作,然后关闭Interactor后台线程。
在我的情况下,Interactor注册来自数据层的更新并等待处理更新,然后将数据发布到Presenter UI线程,因此只要主持人在监听就可以生存。
此功能有所不同,我正在寻找一种好的做法,以使其与“干净的体系结构”一起使用。
最佳答案
因此,如果我理解您的问题,那么您的担心或疑问就会出现,因为您的Interactor不会执行任务然后完成,而是将被订阅或侦听直到操作完成。
我认为这很好,Interactor实现了一个用例,并且在您的程序中异步请求是一个用例,它是否花费时间,是异步任务还是同步操作都没有关系。
仍然是一个用例,演示者将实例化交互器,完成后将发送回操作结果。只要您保持模块化,并且Presenter和Interactor不会与直接依赖项耦合,而是它们通过间接通信,那就太好了。