首页 > 解决方案 > 在 Clean Architecture 中,Repository 必须是 Android 模块还是 Kotlin 模块?

问题描述

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

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

标签: androidrepositoryclean-architecture

解决方案


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

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

在您的情况下,因为您使用的是 Room,所以这个模块需要是一个com.android.library模块。

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


推荐阅读