业务逻辑和演示者中的匕首

Dagger in business logic and presenters

我已经在使用 Dagger2 并且一切正常,但我对将其集成到业务逻辑中的正确方法有疑问。 Robert Martin 在 "Clean Architecture" 中所说的是,DI 框架,因为它们是框架,是应该远离实体和用例的细节,更一般地说,应该远离所有 类比框架级别更高。

什么R.M。建议只允许主模块知道所使用的 DI 框架并自行注入另一个类,这样你就可以用一个 DI 框架替换另一个框架而无需更改 BL。

有没有办法以业务逻辑看不到的方式隔离 Dagger?

严格来说,是的:DI 框架也不应该用于用例或实体圈。 (包括属性和注释)

问题是你想在你的项目中处理这个规则有多严格。每个规则和决定都有利有弊。正如您所说,将 DI 排除在内部圆圈之外的优点是您以后可以轻松更换它。你必须决定利弊有多大,例如:必须手动将依赖项传递给用例。

就我个人而言,我目前尝试在我的项目中非常严格地处理它。但是我的用例往往只有很少的依赖关系...