【问题标题】:Realizing Interactors with Android MVP Clean Architecture使用 Android MVP Clean Architecture 实现交互器
【发布时间】:2016-10-02 18:45:04
【问题描述】:

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

当前架构:

视图(片段) Presenter Interactor Repository

  • Fragment 实现 View 并创建 Presenter。
  • Presenter 通过 View 接口引用 Fragment。
  • Presenter 实现了一个 Interactor.Callback 接口,用于要呈现的数据
  • Presenter 创建并启动一个 Interactor。
  • 交互器在后台线程中从存储库获取和更新数据以执行业务逻辑
  • 交互器为来自存储库的数据库/服务器数据实现 Repository.Callback。
  • 交互器在存储库中注册以更新它所需的数据。

在当前设计中,每个显示有 1 个交互器(一个显示可能包含多个片段,例如具有 30 个相同类型片段的 ViewPager),每个片段有 1 个演示者。 Presenter 和 Interactor 没有框架依赖关系,可以轻松进行测试。

我主要关心的是交互器/用例的实现以及它们与演示者 (MVP) 或视图模型 (MVVM) 的关系。

问题:

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

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


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

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

这个功能是不同的,我正在寻找一种好的做法来使它与“干净的架构”一起工作。

【问题讨论】:

  • 那么你的问题到底是什么?
  • 我编辑了问题部分以澄清这一点。

标签: android mvvm architecture mvp android-databinding


【解决方案1】:

因此,如果我理解您的问题,您的担忧或疑虑就会出现,因为您的交互器不会执行任务然后完成,而是会被订阅或侦听直到操作完成。

在我看来这很好,Interactor 实现了一个用例,并且在您的程序中异步请求是一个用例,它是否需要时间并且是异步任务还是同步操作都没有关系。

Presenter 将实例化 Interactor 仍然是一个用例,当它完成时,它将发回操作的结果。只要您保持模块化,并且 Presenter 和 Interactor 不与直接依赖项耦合,而是通过间接方式进行通信,那就很好了。

【讨论】:

    猜你喜欢
    • 2021-06-16
    • 2018-01-17
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多