簡體   English   中英

如何使用Dagger2實現Factory

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM