[英]How to implement a Factory with Dagger2
我正在嘗試用Dagger2實現一個工廠,但我不知道怎么做?
在一個簡化的例子中:
public class Foo{
public interface Factory{
Foo createNew();
}
private Bar bar;
public Foo(Bar bar){
this.bar= bar;
}
}
我想設置一個提供Foo.Factory實例的方法
@Module
public class TestModule{
@Provides
Bar provideBar(){
return new Bar();
}
@Provides
Foo.Factory provideFooFactory(){
// ??????
}
}
結果應該是(當然從模塊中獲取Bar實例):
new Foo.Factory(){
@Override
public Foo createNew() {
return new Foo(new Bar());
}
};
實現這一目標的正確方法是什么?
我有一個有效的解決方案。 如果你有更好的方法,請告訴我
@Module
public class TestModule{
@Provides
Bar provideBar(){
return new Bar();
}
@Provides
Foo provideFoo(Bar bar){
return new Foo(bar);
}
@Provides
Foo.Factory provideFooFactory(final Provider<Foo> fooProvider){
return new Foo.Factory(){
@Override
public Foo createNew() {
return fooProvider.get();
}
};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.