Ale*_*xey 6 android circular-dependency gradle dagger-2 clean-architecture
我的'干净架构'Android应用程序中有3个gradle模块:'data','domain'和'presentation'."数据"和"呈现"都取决于"域名",但不是彼此.'presentation'保存Application类实现,'data'保存一些存储库单例的实现.
我想使用Dagger 2在Application中实例化存储库,但在这种情况下,我需要在'data'和'presentation'之间建立间接gradle依赖关系.从Clean架构的角度来看,这种依赖性看起来很丑陋,使得可以从"表示"访问"数据".将Dagger组件和模块代码放在单独的gradle模块'di'中会创建循环gradle依赖'data' - >'di' - >'data'.
有没有正确的方法将所有DI代码移动到单独的模块中?
我不认为在“演示”和“基础设施”(在您的情况下为“数据”)之间建立依赖关系是一种不好的做法。
您可以将所有技术依赖项放在基础设施层中,并从应用程序层调用它(在您的情况下为“演示”)。
这是因为,在某些情况下,如果您没有业务规则,则需要调用基础设施而不调用域层。
干净架构中最重要的事情是将领域与所有其他事物(尤其是技术事物)分开。
您还可以在同一模块中拥有应用程序层和基础设施层。
有了这些依赖项,您就不会出现循环依赖项:
application -> domain
application -> infrastructure
infrastructure -> domain
Run Code Online (Sandbox Code Playgroud)
如果您有以下依赖性,您就可以拥有它:
domain -> infrastructure
Run Code Online (Sandbox Code Playgroud)
也就是说,您不应该在应用程序层实例化 Dagger 类。所有数据访问实例必须位于基础设施层。您可以从应用程序调用数据访问接口,并在基础设施层使用 Dagger 实现。
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |