【发布时间】:2019-06-20 05:49:58
【问题描述】:
我最近听说并研究了清洁架构,并试图自己实现它以深入了解它,我知道 域 模块(层)具有逻辑并且应该具有一些接口以及使用存储库的用例。据我所知,Domain 层无法访问任何其他层,但 Data 和 Presentation 层可以访问 域层,但不相互。
我的存储库定义(接口)在 Domain 模块中,它们的实现在 Data 模块中,然后由 Dagger 注入。另外,我有一些 UseCases 注入了一些存储库。
我遇到的问题是,Presentation 模块可以访问存储库接口和用例,因为它们都在 Domain 模块中,并且通过 gradle 导入Presentation 层。
我不认为在 Presentation 模块中同时访问两者会很好,我使用 Kotlin 和 internal 关键字来隔离每个模块的类,但作为 Data 模块需要访问存储库接口来实现它们,我不能为它们使用 internal 关键字,所以它们现在暴露了。
我的问题是,是否有可能以某种方式更改设计以仅公开用例?
【问题讨论】:
-
表示层可以访问接口真的有问题吗?当然,你可以将接口放在单独的模块中,只让用例和数据依赖它,但这真的值得增加复杂性吗?
-
不是这样,但它违反了清洁架构原则,让开发人员对应该使用哪一个感到困惑?用例还是存储库?
标签: android kotlin clean-architecture