dependency-injection - 业务逻辑和演示者中的 Dagger

标签 dependency-injection dagger clean-architecture

我已经在使用 Dagger2 并且一切正常,但我对将其集成到业务逻辑中的正确方法有疑问。 Robert Martin 在《整洁架构》中所说的是,DI 框架既然是框架,那么细节就应该远离实体和用例,更一般而言,远离比框架更高级别的所有类.

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

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

最佳答案

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

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

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

关于dependency-injection - 业务逻辑和演示者中的 Dagger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48563184/

相关文章:

java - 使用 auto-factory 生成的工厂无法导入 glide 生成的 api

javascript - 我可以更改扩展类中方法的返回类型吗?

android - 整洁架构与 MVPC/MVC/MVP

design-patterns - ServiceLocator 是反模式吗?

c# - 依赖注入(inject)以解决与运行时数据的依赖关系

java - 如何导入来自以另一个类为条件的配置 bean 的 bean?

c# - Ninject.Extensions.Factory : cannot find binding

android - 使用适用于 Android MVP 的 Dagger 2 设置模块和组件 - 具有多个 fragment 的 Activity

android - 就良好架构而言,使用 DI(Dagger)的好例子是什么?

c# - Clean Architecture 中的用户实体