मैं यह जानने की कोशिश कर रहा हूं कि मेरे सॉफ़्टवेयर को कॉन्फ़िगर करने के लिए डीआईसी / IoC रजिस्ट्री का उपयोग कब करना है और कारखानों का उपयोग करने के लिए, या तो दृष्टिकोण के पीछे तर्क के साथ।
मैं अपने DI कंटेनर (डीआईसी) के रूप में स्ट्रक्च्योर मैप का उपयोग कर रहा हूं, जो रजिस्ट्रियों का उपयोग करके कॉन्फ़िगर करना आसान है। डीआईसी में व्यावहारिक रूप से सभी पंजीकृत वस्तुएं इस अर्थ में स्थिर हैं, कि मुझे डीआईसी को कॉन्फ़िगर करने के बाद रनटाइम में किसी भी कार्यान्वयन / उदाहरण को बदलने / एक्सचेंज करने की आवश्यकता नहीं है, और वे डीआईसी में एकल के रूप में कॉन्फ़िगर किए गए हैं। हालाँकि, चूंकि मेरा सॉफ़्टवेयर (SW) विभिन्न उपकरणों पर चलेगा, मुझे डिवाइस के आधार पर डिवाइस-विशिष्ट रजिस्ट्री का चयन करने की आवश्यकता है जो कि मेरे SW के अनुसार हार्डवेयर को कॉन्फ़िगर करने के लिए चलती है।
चूंकि मेरी कुछ वस्तुओं के निर्माण के लिए कॉन्फ़िगरेशन फ़ाइलों में पढ़ने की आवश्यकता होती है, मैं ऑब्जेक्ट के निर्माण से कॉन्फ़िगरेशन की रीडिंग को अलग करने के लिए, इन इंस्टेंस को डीआईसी में वापस करने के लिए उपयोग कर रहा हूं। मैंने संबंधित प्लगइन प्रकारों के लिए डीआईसी में फैक्ट्री गेटर्स पंजीकृत किया।
अब कहते हैं कि मैं एक प्लगइन प्रकार IMotorठोस प्रकार के साथ Motor1और Motor2है, जो एक कारखाने के द्वारा नियंत्रित किया जाना चाहिए। मेरे डिवाइस को कॉन्फ़िगर करने के तरीके के बारे में अब मैं दो तरीके तय कर सकता हूं:
- मुझे लगता है कि दप एक करने के लिए पर चल रहा है डिवाइस के बारे में जानकारी पास
MotorFactoryया तो और यह सही मोटर देता है,Motor1याMotor2। इस मामले में निर्णय लेने का तर्क फैक्टरी के अंदर है। - मैं डिवाइस पर चल रहा है और दो कारखानों बनाने के अनुसार डीआईसी कॉन्फ़िगर
Motor1FactoryऔरMotor2Factoryहै, जहां एक बनाता हैMotor1और अन्यMotor2। इस मामले में मेरे पासIMotorडिवाइस-विशिष्ट रजिस्ट्रियों के लिए रजिस्ट्री प्रविष्टियों में अंतर होगा जोMotor1Factoryया तो उपयोग करते हैं याMotor2Factory।
अब मेरा सवाल यह है कि इन दोनों में से कौन सी विधि बेहतर है और क्यों? मेरे लिए, ऐसा लगता है कि पहला मामला आगे और सीधा नहीं है, क्योंकि मैं उस तर्क को फैला रहा हूं जो यह तय करता है कि पूरे कोड-बेस में किस तरह का इंस्टेंट है। जबकि दूसरे मामले में मैं अपने कोड में कारखानों की संख्या को प्रभावी ढंग से बढ़ा रहा हूं, क्योंकि मुझे प्रत्येक ठोस प्रकार के लिए एक कारखाने की आवश्यकता होगी। यह मेरे लिए और भी भ्रामक हो जाता है, जब अमूर्त कारखानों को मिश्रण में मिलाया जाता है।
तो फिर से: मुझे एक विधि या दूसरे का उपयोग कब करना चाहिए? और अधिक महत्वपूर्ण बात: कौन सा रास्ता तय करने के लिए अच्छे संकेतक हैं?