匕首在业务逻辑和演示者

时间:2018-02-01 12:49:54

标签: dependency-injection dagger clean-architecture

我已经在使用Dagger2并且一切正常,但我对将其集成到业务逻辑中的正确方法存有疑问。 罗伯特马丁在"清洁建筑"因为它们是框架,所以DI框架是应该远离实体和用例的细节,而且通常来自所有比框架更高级别的类。

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

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

1 个答案:

答案 0 :(得分:2)

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

问题是你想在你的项目中处理这个规则有多严格。每个规则和决定都有利有弊。正如你所说,将DI保留在内圈之外的专家将是你以后可以轻易取代它。 U必须决定与利弊相比有多大的好处,例如:必须手动将依赖关系传递给用例。

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