android - 在 Clean Architecture 中,Repository 必须是 Android 模块还是 Kotlin 模块?
问题描述
在 Clean Architecture 中,存储库包含远程(Retrofit)和本地(Room)数据源。我看到 Remote 是纯 Kotlin 模块。但是由于 Room 需要访问 Android Context,因此 Local 是 Android 模块。
那么,由于 Local 模块,Repository 必须是 Android 模块吗?如果是,您是否知道任何抽象来避免本地模块中的上下文并使该模块成为纯 Kotlin?
解决方案
区别不在于编程语言。决定因素是它是否依赖于任何来自 Android 的组件,例如 Context 来操作。
我有一个用 kotlin 编写的模块,它是一个java-library
. 这个库包含我的“域”逻辑,不包含任何 Android 组件。
在您的情况下,因为您使用的是 Room,所以这个模块需要是一个com.android.library
模块。
我认为没有办法解决这个问题。显然,您可以将模块分成两部分:一个用于 Retrofit ( data-api
),另一个用于Room
( data-local
)
推荐阅读
- quire-api - 如何使用 API 找到 Quire 任务的父任务?
- javascript - 按值减少对象数组并聚合
- amazon-web-services - AWS EC2 AMI 用户数据运行 PM2
- python - 卡在 Learn Python The Hard Way ex43.py 一个基于 OOP 的练习
- linux - 虚拟机更改默认网关?Nmap扫描
- javascript - 使用 localStorage 将变量传递到 iframe 加载的页面
- java - Android:从 snapshop 到 textview 检索值的空异常错误
- asp.net - ASP.NET Core 可以安全地将模型中的 ID 发送到客户端吗?
- python - 具有返回 None 的递归函数的 Python 代码 | 提供输入和输出
- c++ - Codelite:在 C++ 中使用仿函数时,悬停工具提示不起作用