मैं जितना संभव हो निर्भरता इंजेक्शन का उपयोग करने की कोशिश कर रहा हूं, लेकिन जब मुझे अल्पकालिक निर्भरताओं जैसी चीजों की बात आती है तो मुझे परेशानी हो रही है।सार कारखानों का उपयोग "नया" है?
उदाहरण के लिए, मान लें कि मेरे पास एक ब्लॉग मैनेजर ऑब्जेक्ट है जो डेटाबेस में पाए गए ब्लॉग की एक सूची उत्पन्न करना चाहता है। ऐसा करने के विकल्प (जहां तक मैं कह सकता हूं) हैं:
- नया ब्लॉग();
- $ यह-> लोडर-> ब्लॉग();
- लोडर वस्तु, डाटाबेस वस्तुओं, पाठ फिल्टर की तरह वस्तुओं के विभिन्न अन्य प्रकार बनाता है आदि
- $ this-> blogEntryFactory->() बनाने के;
हालांकि, # 1 खराब है क्योंकि यह एक मजबूत युग्मन बनाता है। # 2 अभी भी बुरा लगता है क्योंकि इसका मतलब है कि ऑब्जेक्ट फैक्ट्री को पहले इंजेक्शन दिया जाना चाहिए - यह अन्य सभी ऑब्जेक्ट्स को उजागर करना जो इसे बना सकते हैं।
संख्या 3 ठीक लगता है, लेकिन अगर मैं # 3 का उपयोग करता हूं, तो क्या मैं ब्लॉग एंट्री फैक्ट्री में "नए" कीवर्ड डालता हूं, या, क्या मैं लोडर को ब्लॉग एंटर्री फैक्ट्री में इंजेक्ट करता हूं और लोडर का उपयोग करता हूं?
यदि मेरे पास blogEntryFactory जैसे कई अलग-अलग कारखानियां हैं (उदाहरण के लिए मेरे पास उपयोगकर्ता फैक्ट्री और टिप्पणी फैक्ट्री हो सकती है) ऐसा लगता है कि इन सभी अलग-अलग कारखानों में "नया" कीवर्ड डालने पर निर्भरता समस्याएं पैदा होंगी।
मुझे आशा है कि यह समझ में आता है ...
नोट
मैं यह कैसे इस विशिष्ट ब्लॉग उदाहरण के लिए अनावश्यक है के बारे में कुछ जवाब दिया था, लेकिन आप जहां जाना चाहिए वास्तव में, देखते हैं, के मामलों सार फैक्टरी पैटर्न का उपयोग करें, और यही वह बिंदु है जिसे मैं प्राप्त कर रहा हूं। क्या आप उस मामले में "नया" उपयोग करते हैं, या कुछ और करते हैं?
अगर मैंने इसे सही ढंग से या पूरी तरह से पर्याप्त रूप से समझाया नहीं है, तो कृपया मुझे बताएं, और मैं – johnnietheblack
को स्पष्ट करने की कोशिश करूंगा मैंने मॉडल वर्गों पर निर्भरता इंजेक्शन का उपयोग कभी नहीं देखा है। जब तक कि 'ब्लॉग' वर्ग कुछ व्यावसायिक तर्क (जो मॉडल शायद ही कभी करते हैं) को समाहित करता है, वहां कोई युग्मन कम करने की कोशिश करने का कोई मतलब नहीं है - जोड़े को कोई व्यवहार नहीं है। (केवल इकाई की संरचना है, लेकिन यह बदलने वाला नहीं है।) – millimoose
सबसे पहले, टिप्पणी के लिए धन्यवाद ... तो क्या आप कह रहे हैं कि BlogManager को "नया ब्लॉग()" कहां/कॉल करना चाहिए? – johnnietheblack