依存性注入にGoogle Guiceを使用しています。あなたが見ることができるように条件に基づく依存性注入
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(Payment.class).to(PaymentCashImpl.class);
}
}
、Payment
インスタンスは注文のコンストラクタに注入されています
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();
}
}
このに続き、そうのように、結合のための非常にシンプルなモジュールがある:私は次があるとし。これはMyModule
クラスで行われ、全体的には本当にクールです。
私の主なルックスは次のように:
私はしかし、見ることができない何public static void main(String[] args) {
MyModule module = new MyModule();
Injector injector = Guice.createInjector(module);
Order order = injector.getInstance(Order.class);
order.finishOrder();
}
、私は条件付きでOrder
コンストラクタにPaymentCardImpl
またはPaymentCashImpl
インスタンスのいずれかと結合するいくつかの方法を組み込むことができる方法です。
たとえば、注文は「オンライン」注文だったとしましょう。私はこの必要があります:
bind(Payment.class).to(PaymentCardImpl.class);
これを行うための最善の方法は何ですか?私は依存症注射が初めてです。
あなたが必要な_which_実装を知っていますいつですか? –