Dagger 1的plus()方法是我以前在应用程序中经常使用的方法,所以我理解你可能希望有一个子组件可以完全访问父图形绑定的情况.
在什么情况下使用组件依赖项而不是子组件依赖项是有益的?为什么?
有没有办法告诉 Dagger 2 如何提供某些东西,但不允许它被注入?
假设我想注入一个Qux. AQux需要 aFoo和 a Bar:
@Provides
@Singleton
Foo foo() {
return new Foo();
}
@Provides
@Singleton
Bar bar() {
return new Bar();
}
@Provides
@Singleton
Qux qux(final Foo foo, final Bar bar) {
return new Qux(foo, bar);
}
Run Code Online (Sandbox Code Playgroud)
但如果我不想注射怎么Foo办Bar?也许暴露它们会破坏 的封装,或者它们可能是我只想访问的Qux某种工厂。Qux
我想到了几种可以实现这一目标的方法:
Foo其他提供者需要该单例,我可以将其设为类成员。Foo但如果它自己有几个依赖项,这会变得混乱。Bar任何其他提供程序不需要该单例,我可以在Qux提供程序内创建实例。但如果Qux有多个这样的依赖项,这会变得混乱。这些解决方案看起来都不是非常优雅或危险。还有别的办法吗?