我已经在使用 Dagger2 并且一切正常,但我对将其集成到业务逻辑中的正确方法有疑问。 Robert Martin 在《整洁架构》中所说的是,DI 框架既然是框架,那么细节就应该远离实体和用例,更一般而言,远离比框架更高级别的所有类.
什么 R.M.建议只允许主模块知道所使用的 DI 框架,并自行注入(inject)其他类,这样您就可以用另一个 DI 框架替换一个 DI 框架,而无需更改 BL。
有没有办法以业务逻辑看不到它的方式隔离 Dagger?
最佳答案
严格来说,是的:DI 框架也不应该在用例或实体圈中使用。 (包括属性和注释)
问题是你想在你的项目中如何严格地处理这条规则。每个规则和决定都有优点和缺点。正如你所说,将 DI 排除在内部圈之外的优点是你以后可以轻松地替换它。您必须决定与缺点相比有多大的好处,例如:必须手动将依赖项传递给用例。
就我个人而言,我目前在我的项目中尝试非常严格地处理它。但我的用例往往只有很少的依赖项......
关于dependency-injection - 业务逻辑和演示者中的 Dagger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48563184/