我目前正在构建一个android应用程序,并希望以“干净的架构”为基础,类似于以下作者所建议的那样:

  • Fernando Cejas - Architecting Android…The clean way?
  • Dario Miličić - A detailed guide on developing Android apps using the Clean Architecture pattern
  • Romain Piel - Ingedients for a healthy Android Architecture
  • Uncle Bob - The Clean Architecture
  • Hannes Dorfmann - Mosby Library
  • Pedro Vicente Gómez Sánchez - Effective Android UI
  • David Guerrero - intro to a cleaner android architecture: the mvp pattern
  • Patryk Poborca - Clean Architecture & Testing

  • 当前架构:

    查看(片段)演示者交互器存储库
  • Fragment实现View并创建一个Presenter。
  • 演示者通过“ View ”界面引用片段。
  • 演示者为要呈现的数据实现了一个Interactor.Callback接口(interface)
  • 演示者创建并启动一个Interactor。
  • Interactor 从存储库中获取并更新数据以在后台线程中执行业务逻辑
  • Interactor实现Repository.Callback,用于来自存储库的DB/Server数据。
  • Interactor在存储库中注册以更新其所需的数据。

  • 在当前设计中,每个显示器有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不会与直接依赖项耦合,而是它们通过间接通信,那就太好了。

    07-26 09:32