मेरे पास एक डब्ल्यूसीएफ सेवा है जिसमें कुछ अलग जिम्मेदारियां हैं, लेकिन यह मेरे कोड के साथ बातचीत करने वाले किसी के लिए एक प्रविष्टि बिंदु प्रदान करता है। यह सरल रखने के लिए, चलो वहाँ 2 तरीकोंआईओसी कंटेनर - डब्ल्यूसीएफ सेवा - क्या मुझे कन्स्ट्रक्टर के माध्यम से सभी निर्भरताओं को तुरंत चालू करना चाहिए?
private IMethodAHelper _methodA;
private IMethodBHelper _methodB;
public MyService(IMethodAHelper methodA, IMethodBHelper methodB)
{
_methodA = methodA;
_methodB = methodB;
}
public void MethodA() {
_methodA.CallThis();
}
public void MethodB() {
_methodB.CallThis();
}
क्योंकि उपभोक्ताओं केवल एक कारण है, MethodA या MethodB के लिए सेवा कॉल करेंगे, यह एक समस्या यह है कि आईओसी कंटेनर बेकार में सभी उनकी निर्भरता को कताई हो जाएगा रहे हैं मान लीजिए? मैं एक एकल प्रविष्टि बिंदु प्रदान करना चाहता हूं, इसलिए मैं सेवा को विभाजित नहीं करना चाहता हूं, लेकिन सेवा के प्रत्येक उपभोक्ता को केवल एक सबसेट की आवश्यकता होने पर सभी निर्भरताओं को फैलाने में थोड़ा अपमानजनक लगता है।
एक और तरीका है मैं ऐसा करने का सोच रहा था
public void MethodA() {
var methodA = ObjectFactory.GetInstance<IMethodAHelper>();
methodA.CallThis();
}
यह निर्भरता इसकी आवश्यकता को लाने के लिए प्रत्येक "पथ" की अनुमति देता है की तरह कुछ हो सकता है, तथापि, यह एक बहुत कठिन इकाई परीक्षण लिखने के लिए बनाता है। क्या किसी के पास कोई सुझाव है? सभी निर्भरताओं को फैलाने के लिए कितना बड़ा मुद्दा है? सेवा में इस पहले प्रवेश बिंदु के बाद, यह कन्स्ट्रक्टर के माध्यम से निर्भरताओं को इंजेक्ट करने के लिए समझ में आता है, लेकिन इस पहले प्रविष्टि बिंदु पर, अनुशंसित दृष्टिकोण क्या है?