2

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

RM 建议只允许主模块知道使用的 DI 框架,并自行注入其他类,这样您就可以用另一个 DI 框架替换一个 DI 框架,而无需更改 BL。

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

4

1 回答 1

2

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

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

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

于 2018-02-01T20:47:09.397 回答