【问题标题】:In Clean Architecture, must Repository is Android or Kotlin module?在 Clean Architecture 中,Repository 必须是 Android 模块还是 Kotlin 模块?
【发布时间】:2019-07-03 10:26:48
【问题描述】:

在 Clean Architecture 中,存储库包含远程 (Retrofit) 和本地 (Room) 数据源。我看到 Remote 是纯 Kotlin 模块。但是由于 Room 需要访问 Android Context,因此 Local 是 Android 模块。

那么,由于 Local 模块,Repository 必须是 Android 模块吗?如果是,您是否知道任何抽象来避免 Local 模块中的 Context 并使该模块成为纯 Kotlin?

【问题讨论】:

    标签: android repository clean-architecture


    【解决方案1】:

    区别不在于编程语言。决定因素是它是否依赖于任何来自 Android 的组件,例如 Context 来运行。

    我有一个用 kotlin 编写的模块,它是 java-library。这个库包含我的“域”逻辑,不包含任何 Android 组件。

    在您的情况下,因为您使用的是 Room,是的,此模块需要是 com.android.library 模块。

    我认为没有办法解决这个问题。显然,您可以将模块分成两部分:一个用于 Retrofit (data-api),另一个用于 Room (data-local)

    【讨论】:

    • 感谢您的回答。据我所知,因为子模块是 Android (local),所以这个容器模块 (repository) 也必须是 Android 模块。好像没办法抽象出来。
    • 我相信你是对的。您可以在 com.android.library 模块中使用 java-library,但不能以其他方式使用
    【解决方案2】:

    这里是link 很高兴在上面的链接上看到开源。

    【讨论】:

    猜你喜欢
    • 2022-11-06
    • 2018-12-03
    • 2014-09-11
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多