Guice - как реализовать фабрику, которая возвращает разные реализации
Допустим, у меня есть сервис под названием Guice service и вот его конструктор
public GuiceService(IPayment payment) {
this.payment = payment;
}
И мой код используется для его создания с использованием Enum
IPayment payment = new PaymentFactory.create(PaymentType.Cash);
NaiveService naiveService = new NaiveService(payment);
И мне нужно было где-то иметь заводскую реализацию. Что-то вроде этого
public IPayment create(PaymentType paymentType) {
IPayment cardPayment = null;
switch (paymentType) {
case Cash:
cardPayment = new CashPayment(100);
break;
case Card:
cardPayment = new CardPayment(10, 100);
break;
}
return cardPayment;
Теперь я хочу использовать Guice и думаю, что я хочу использовать FactoryModuleBuilder.
Какой способ сделать это, если у меня есть более одного внедрения IPayment.
(например, CardPayment, CashPayment)
Это работает для одного
install(new FactoryModuleBuilder()
.implement(IPayment.class, CashPayment.class)
.build(IPaymentFactory.class));
Как мне реализовать конструктор?он все еще получит IPayment? или он получит factoryImpl, созданный Guice?
Спасибо