Мне нужно несколько экземпляров X
, которые вводятся в разных местах. Я внедрил пользовательский поставщик Guice для предоставления различных экземпляров класса X следующим образом.DRY Custom Guice Provider с параметрами
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) Если я не скрываю поле, мне все равно нужно иметь конструктор в подклассе в любом случае ,
Я не могу использовать Assisted Injection, потому что у меня нет X
, поэтому я меняю его конструктор.
Должен быть лучший способ сделать это, или более разумный способ использования Guice или другого для реструктуризации моего кода. Я ищу несколько советов для перемен здесь.
Спасибо,
Спасибо. Это работает. – chepukha