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?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос