मैं निर्भरता इंजेक्शन के बारे में पढ़ रहा हूं और एक साधारण प्रश्न है। मैं समझ सकता हूं कि कन्स्ट्रक्टर या सेटर इंजेक्शन के माध्यम से आवश्यक निर्भरता DI ढांचे द्वारा स्वचालित रूप से की जाती है। क्या होता है जब कोई ऑब्जेक्ट निर्णय लेता है कि उसे कुछ व्यावसायिक प्रक्रिया के कारण एक नई वस्तु बनाने की आवश्यकता है? क्या मुझे इन परिस्थितियों में हमेशा फैक्ट्री बनाने की ज़रूरत है? इसे कम अमूर्त प्रश्न बनाने के लिए, यहां एक उदाहरण है।निर्भरता इंजेक्शन के बारे में न्यूबी प्रश्न जब किसी विधि को नई ऑब्जेक्ट्स बनाने की आवश्यकता होती है
मान लें कि मैं क्षुद्रग्रहों का एक खेल लिख रहा हूं। बीच में एक जहाज है जो चारों ओर घूम सकता है और क्षुद्रग्रहों को गोली मार सकता है। मान लीजिए कि जहाज को इंजेक्शन वाली चीज़ों को बनाया गया है और उन्हें मंजूरी दी गई है। जब playerShip.shoot()
कहा जाता है तो हमें bullet
ऑब्जेक्ट बनाने की आवश्यकता होती है। बुलेट ऑब्जेक्ट को यह जानने की जरूरत है कि यह किस तरह से जा रहा है (direction
) और कहां से शुरू करें (point
)।
आम तौर पर, मैं कुछ इस तरह करना होगा:
bullet = new Bullet(direction, point);
हालांकि, उस बुलेट वर्ग के लिए कसकर जोड़ों PlayerShip वर्ग। यह निर्भरता इंजेक्शन के तहत कैसे काम करना चाहिए? क्या मुझे बुलेट फैक्ट्री इंटरफ़ेस बनाने और जहाज में उसके कार्यान्वयन को इंजेक्ट करने की आवश्यकता है?
संपादित करें: मैं वास्तव में क्षुद्रग्रह लिख नहीं रहा हूं। यह एक साधारण उदाहरण था कि मैंने सोचा कि लोग समझेंगे। मैं कुछ ऐसा चाहता था जिसे रनटाइम बनाया जाना चाहिए ("वस्तुओं को तारों" के दौरान नहीं) जिसमें इसके कन्स्ट्रक्टर के पैरामीटर भी थे।
इसके अलावा, यदि "बुलेट" स्वयं अपने ऑब्जेक्ट पेड़ के साथ एक बहुत ही जटिल वस्तु थी, तो संभवतः आप एक कारखाना चाहते हैं कि जहाज को बुलेट की निर्भरताओं पर निर्भरता रखने से बचें। – Epaga