我正在使用Google Guice進行依賴注入。假設我有以下幾點:基於條件的依賴注入
public interface Payment {
public void pay();
}
public class PaymentCardImpl implements Payment {
public void pay() {
System.out.println("I pay with a card");
}
}
public class PaymentCashImpl implements Payment {
public void pay() {
System.out.println("I pay cash");
}
}
public class Order {
private Payment payment;
@Inject
public Order(Payment payment){
this.payment=payment;
}
public void finishOrder(){
this.payment.pay();
}
}
根據這一點,是捆綁,像這樣一個非常簡單的模塊:
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(Payment.class).to(PaymentCashImpl.class);
}
}
正如你所看到的,一個Payment
實例注入秩序構造。這是在MyModule
課上完成的,總體而言非常酷。
我主要的樣子:
public static void main(String[] args) {
MyModule module = new MyModule();
Injector injector = Guice.createInjector(module);
Order order = injector.getInstance(Order.class);
order.finishOrder();
}
我卻無法看到的,是我怎麼可能把一些方法來有條件地結合無論是PaymentCardImpl
或一個PaymentCashImpl
實例的Order
構造。
比方說,例如,訂單是'在線'訂單。然後我需要:
bind(Payment.class).to(PaymentCardImpl.class);
這樣做的最好方法是什麼?我是新來的依賴注入。
:
或? –