मेरे पास एक कक्षा है जिसमें एक कन्स्ट्रक्टर है जहां सभी तर्क GUICE द्वारा इंजेक्शन दिए जाते हैं।गैर-इंजेक्शन वाले फ़ील्ड के साथ गुइस इंजेक्शन वाले फ़ील्ड के साथ जावा कन्स्ट्रक्टर
Public class Order {
private final ClassOne classOneObj;
private final ClassTwo classTwoObj;
@Inject
public order(ClassOne classOneObj, ClassTwo classTwoObj){
this.classOneObj = classOneObj;
this.classTwoObj = classTwoObj;
}
}
अब, मैं एक और क्षेत्र (जैसे कि, पूर्णांक स्थिति) चर जो इंजेक्शन नहीं किया जा सकता जोड़ना चाहते हैं।
क्या यह सभी इंजेक्शन पैरामीटर के साथ पहले ऑब्जेक्ट बनाने के लिए एक अच्छा अभ्यास है और फिर नया फ़ील्ड सेट करें जिसे एक सेटर विधि से इंजेक्शन नहीं दिया जा सकता है?
public class OrderFactory {
private final ClassOne classOneObj;
private final ClassTwo classTwoObj;
@Inject
public order(ClassOne classOneObj, ClassTwo classTwoObj){
this.classOneObj = classOneObj;
this.classTwoObj = classTwoObj;
}
//getter methods for all the above variables
public ClassOne getclassOneObj(){
return classOneObj;
}
....
public Order createOrder(int status) {
return new Order(status, classOneObj, classTwoObj);
}
}
फिर नए आदेश वर्ग की तरह
public class Order {
int status
private final ClassOne classOneObj;
private final ClassTwo classTwoObj;
public order(int status, ClassOne classOneObj, ClassTwo classTwoObj){
this.status = status
this.classOneObj = classOneObj;
this.classTwoObj = classTwoObj;
}
//getter methods for all these member variables
}
अब देखो आदेश वस्तु मैं लूंगा बनाने के लिए होगा:
मैं नीचे दिए गए के रूप में एक और दृष्टिकोण है, जहां मैं एक कारखाने श्रेणी का निर्माण के साथ आया था पहले ऑर्डर फैक्ट्री ऑब्जेक्ट बनाएं और फिर "createOrder" विधि का उपयोग करके मैं ऑर्डर ऑब्जेक्ट बनाउंगा।
मैं बॉयलरप्लेट कोड लिखने के साथ समाप्त हो रहा हूं। यकीन नहीं है कि यह एक अच्छा अभ्यास है। क्या कोई इस पर सुझाव दे सकता है कि यह दृष्टिकोण सही है या इस समस्या के लिए कोई बेहतर तरीका है?
मैंने Google Guice में पढ़ा और पाया कि ऐसे मामलों के लिए सहायक इंजेक्शन के लिए @Assisted सुविधा है। लेकिन मुझे वह जटिल मिला और खुद को यह विश्वास नहीं कर सका कि मुझे इसके मामले में इसके साथ जाना चाहिए या नहीं।
किसी भी सुझाव या मार्गदर्शन के लिए अग्रिम धन्यवाद।
इलुक्स को प्रतिबिंबित करना, कारखानों के लिए आपका मैन्युअल दृष्टिकोण ठीक है, हालांकि आप बहुत कम फैशन में सहायक इंजेक्शन काम कर सकते हैं। एकमात्र चीज जो मैं आपके मैनुअल इंजेक्शन के बारे में बदलूंगा वह एक 'प्रोडर' और 'प्रदाता ' इंजेक्ट करना है, यदि आप एक ही ऑर्डर फैक्ट्री के साथ कई अलग-अलग ऑर्डर बनाना चाहते हैं। अन्यथा, यह बहुत अच्छा लग रहा है। –