【发布时间】:2017-02-08 07:07:31
【问题描述】:
我需要在不同的地方注入多个X 实例。
我实现了一个自定义 Guice Provider 来提供 X 类的不同实例,如下所示。
public class XProvider implements Provider<X> {
private final Factory f;
private final String NAME = "Something String";
@Inject
public XProvider(Factory f) {
this.f = f;
}
public X get() {
return new X(f, NAME);
}
}
因为我需要不同的 X 实例和不同的 NAME 值,我需要有多个相似的类
像 XProvider1、XProvider2 等,只有一个字段不同。
创建一个抽象类来扩展无助于减少冗余代码的数量,因为(1)隐藏字段不好
(2)如果我不隐藏字段,我仍然需要在子类中有构造函数。
我不能使用辅助注射,因为我不拥有X,所以我更改了它的构造函数。
必须有更好的方法来做到这一点,要么是使用 Guice 的更聪明的方法,要么是另一种重构我的代码的方法。 我在这里寻找一些改变的建议。
谢谢,
【问题讨论】:
标签: java dependency-injection guice