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