जब कोड लिखने हम वस्तुओं के दो बड़े समूह की पहचान करने में सक्षम होना चाहिए इंजेक्शन:निर्भरता इंजेक्शन, एक newable (इकाई) में एक "इंजेक्शन" वस्तु (सेवा)
- Injectables
- Newables
http://www.loosecouplings.com/2011/01/how-to-write-testable-code-overview.html
http://misko.hevery.com/2008/09/30/to-new-or-not-to-new/
इंजेक्शन वस्तुओं वस्तुओं (सेवा) है कि उनके निर्माताओं में निर्भरता इन निर्भरताओं आम तौर पर एक आईओसी कंटेनर का उपयोग कर हल कर रहे हैं बेनकाब कर रहे हैं, इन वस्तुओं केवल अपने निर्माताओं के अन्य इंजेक्शन के लिए पूछ सकते
Newable ऑब्जेक्ट भी बेनकाब कर रहे हैं उनके कंस्ट्रक्टर्स लेकिन newables में निर्भरता केवल अन्य newable वस्तुओं (संस्थाओं, मूल्य वस्तुओं) के लिए पूछ सकते हैं, newable वस्तुओं की एक और विशेषता है कि वे एक इंजेक्शन वस्तु
के लिए एक संदर्भ पकड़ नहीं होना चाहिए लेकिन, हम अक्सर जब कोड लिखने एक सर्व "इंजेक्ट" करने की जरूरत है बर्फ (इंजेक्शन योग्य) एक इकाई में (नया)
मैं सोच रहा हूं कि एक नई वस्तु में सेवा निर्भरता को उजागर करना शायद इसे विधि स्तर पर बेहतर कर रहा है लेकिन ऐसा करने के लिए बहुत सारे काम की तरह लगता है .... बस निर्भरता हर बार एक विधि कहा जाता है को हल करने के बारे में सोच .... अच्छी तरह से इस बदबू आ रही है जैसे हम सेवा लोकेटर विरोधी पैटर्न
तरह से मैं इस समाधान कर लिया है का उपयोग करना होगा है:
बनाएं निर्भरता को उजागर करने वाली विधि वाला एक इंटरफ़ेस (सेवा इस विधि में उपयोग की जाएगी)
इंटरफेस के लिए एक एक्सटेंशन विधि बनाएँ और एक अलग नाम स्थान में रखें, शायद एक और विधानसभा में, और सिर्फ मूल विधि निर्भरता को हल करने के लिए एक सेवा लोकेटर
का उपयोग कर इस हम कर के लिए कॉल लपेट हमारे नए अक्षरों में आसानी से सेवाओं का उपयोग करने की क्षमता के साथ नई और इंजेक्शन योग्य वस्तुओं के बीच लगातार पृथक्करण है
- आपको क्या लगता है?
- एक विस्तार विधि में सेवा लोकेटर का उपयोग करना एक बुरा अभ्यास माना जाता है?
- आप एक्सटेंशन विधि कॉल का यूनिट-टेस्ट कैसे करेंगे?
निकटता से संबंधित: http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to-resolve- निर्भरता-for-entities-business-objec – Steven
Thx यह लिंक वास्तव में उपयोगी था – Jupaol