在匕首中装饰提供的实例

时间:2016-08-17 16:37:19

标签: java android dagger-2

如果您使用Dagger 2进行依赖注入,是否可以创建一个提供程序来修改第二个提供程序提供的实例而无需修改第二个提供程序?

假设我有一个预先存在的界面Foo,如下所示:

interface Foo {
    String getName();
    void setName(String name);
}

我还有一个可以创建Foo实例的预先存在的提供程序。

@Module
class FooModule {
    @Provide Foo provideFoo() {
        ...
    }
}

我现在想要创建这样的东西:

class DecoratedFooProvider {
    @Provide Foo provideFoo(ObjectGraph graph) {
        final Foo original = graph.get(Foo.class);
        original.setName("A common default name");
        return original;
    }
}

我不能使用@Named() - 限定符,因为我想通过修改他们收到的Foo配置来改变现有组件的行为。

0 个答案:

没有答案