【问题标题】:Chaining multiple use cases链接多个用例
【发布时间】:2019-12-22 18:23:21
【问题描述】:

我在我的应用程序中使用 Clean Architecture 模式和 MVVM 架构。 所以我有用于单个操作的 UseCases,例如 LoginUseCase、DownloadAttachmentUseCase 等。

我很好奇的是,如果我想在我的视图模型中链接多个用例,执行类似的操作,首先登录,一旦成功,下载附件。

我是否需要创建另一个单独的用例,例如LoginAndDownloadAttachmentUseCase ?

【问题讨论】:

    标签: android mvvm rx-java2 use-case clean-architecture


    【解决方案1】:

    只有应用程序业务规则的逻辑应该在用例中;对 UI 的更改不应改变用例的实现方式。对我来说,组合 LoginAndDownloadAttachmentUseCase 似乎只在特定 UI 的上下文中有用,因此不应该作为用例存在。

    此外,如果您要为所有可能的场景创建组合用例,随着您的应用变得越来越复杂,这将导致用例类的组合爆炸式增长。

    在 ViewModel 中有一些逻辑是可以的,尤其是当它只是转换数据或进行高级操作时。每个用例代表一个高级操作。让 ViewModel 将其中的一些组合在一起并不会使测试和可维护性变得更加困难。

    我认为https://github.com/googlesamples/android-architecture/tree/usecases 是一个很好的例子。用例非常少,但在更复杂的应用程序中,它们可以将多个数据源组合在一起。

    【讨论】:

      【解决方案2】:

      做单独的 UseCase 会很好,因为具有 Clean Architecture 的 MVVM 在这种情况下非常好。它在分离代码库的职责方面更进了一步。它清楚地抽象了可以在您的应用中执行的操作的逻辑。

      【讨论】:

      • 那么,我的问题的答案是什么?
      • 做单独的UseCase,而不是将下载与登录结合起来
      【解决方案3】:

      尝试改进同步请求,但同步方法在主线程上执行,因此它们会在 Android 4.0 或更高版本上触发应用程序崩溃。你会遇到**NetworkOnMainThreadException** 错误。 要处理这个问题,请在 JobIntent Service 等单独的线程 中执行它,并通过 LocalBroadcast 接收器获取响应。 收到状态后,您可以执行下一个查询以下载附件。

      【讨论】:

      • 这与我的问题无关。
      • 我的问题是关于构建应用程序的正确方法。
      猜你喜欢
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多