पर आधारित निर्भरता इंजेक्शन मैं निर्भरता इंजेक्शन के लिए 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();
}
क्या मैं फिर भी नहीं देख सकते हैं, मैं कैसे किसी तरह सशर्त बाध्य करने के लिए या तो एक PaymentCardImpl
या एक PaymentCashImpl
Order
निर्माता के उदाहरण को शामिल कर सकता है।
उदाहरण के लिए कहें कि आदेश 'ऑनलाइन' ऑर्डर था। इसके बाद मुझे इसकी आवश्यकता होगी:
bind(Payment.class).to(PaymentCardImpl.class);
ऐसा करने का सबसे अच्छा तरीका क्या है? मैं निर्भरता इंजेक्शन के लिए नया हूँ।
जब आप _which_ कार्यान्वयन की जरूरत है पता है? –