gpt4 book ai didi

android - 使用 Android MVP Clean Architecture 实现交互器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:42 26 4
gpt4 key购买 nike

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

当前架构:

View ( fragment )<-> Presenter <-> Interactor <-> Repository

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

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

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

问题:

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

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


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

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

这个功能是不同的,我正在寻找一个好的实践来让它在“干净的架构”下工作。

最佳答案

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

在我看来这完全没问题,一个交互器实现一个用例,在你的程序中异步请求是一个用例,它是否需要时间并且是异步任务还是同步操作都没有关系。

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

关于android - 使用 Android MVP Clean Architecture 实现交互器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com