android - 使存储库在 Clean Architecture 的域层中不可见

标签 android kotlin clean-architecture

我最近听说和研究了 Clean Architecture 并试图自己实现它以深入理解它,我知道 Domain 模块(层)有逻辑并且应该有一些接口(interface)以及使用存储库的用例。据我所知,Domain 层无法访问任何其他层,但 DataPresentation 层可以访问 层但彼此不。

我的存储库定义(接口(interface))在 Domain 模块中,它们的实现在 Data 模块中,然后由 Dagger 注入(inject)。此外,我还有一些 UseCases 可以注入(inject)一些存储库。

我遇到的问题是,Presentation 模块可以访问存储库接口(interface)和用例,因为它们都在 Domain 模块中,并且是用 gradle 导入的表示层。

我不认为在 Presentation 模块中同时访问两者会很好,我正在使用 Kotlin 和 internal 关键字来隔离每个模块的类,但是作为 Data 模块需要访问存储库接口(interface)来实现它们,我不能为它们使用 internal 关键字,所以它们现在暴露了。

我的问题是,是否可以通过某种方式更改设计以仅公开用例?

最佳答案

如果 UseCase 与数据相关(例如 ReadUserUseCase),那么它的接口(interface)应该留在 domain 模块中,实现应该移动到 data 模块。

关于android - 使存储库在 Clean Architecture 的域层中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54381449/

相关文章:

android - 在一个 jar 库中支持不同的 Android 版本

kotlin - Kotlin和构造函数,初始化

java - 我的 Java 项目的简洁架构实践

java - 如何为 void 方法创建单元测试,该方法仅更改数据并保存它

ios - 整洁架构中的路由

java - 如何在android中让手电筒闪烁

java - 是否可以以编程方式访问 Android Q (SDK >= 29) 上的下载文件夹?

java - 如何在 CameraX 预览上设置一个框,以便使用 Java 中的 ImageAnalysis 对其进行处理?

android - RecyclerView 中特定位置的拖放暂停

javascript - Phonegap 中的持久存储