मैंने देखा है कि सभी डी उदाहरणों के लिए, मैं हमेशा निर्भरताओं को अन्य वर्गों, सेवाओं की तरह देखते हैं। लेकिन एक वस्तु वास्तव में स्ट्रिंग्स और रिसोर्स रैपर (फाइल/पथ/यूआरआई/यूआरएल, कॉन्फ़िगरेशन वैल्यू स्ट्रिंग/दस्तावेज़, या रीडर के विपरीत) जैसे कॉन्फ़िगरेशन मानों पर, भारी और/या महत्वपूर्ण रूप से निर्भर हो सकती है।क्या मूल्य वस्तुएं डिज़ाइन पैटर्न के लिए मान्य निर्भरताएं हैं?
नोट, यह जावा या सी # सिंटैक्स में डी डिज़ाइन पैटर्न के बारे में है, यह नहीं कि कोई विशेष DI ढांचा कैसे संभालता है।
उदाहरण के लिए, मान लीजिए कि मेरे पास यह वर्ग है जो स्ट्रिंग (सापेक्ष पथ, कुछ अस्पष्ट कार्यान्वयन तर्क के आधार पर) देता है। यह (इसके विभिन्न कार्यान्वयनकर्ताओं) में "प्रोजेक्टलाक्शन" पर कॉन्फ़िगरेशन/प्रारंभिक निर्भरता है, क्योंकि उपयोगकर्ता के पास उनकी मशीन पर विभिन्न प्रोजेक्ट हो सकते हैं और यह कक्षा किसी दिए गए प्रोजेक्ट के आधार पर कुछ तर्क निष्पादित करेगी।
public abstract class PathResolver {
protected File projectFilesLocation;
public RoutinePathResolver(File projectFilesLocation) {
this.projectFilesLocation = projectFilesLocation;
}
public abstract String getPath(String someValue);
}
मैं डि उपयोग नहीं कर रहा सिर्फ यूनिट के परीक्षण के लिए (हांफी मैं भी नहीं इकाई परीक्षण, मौजूदा परियोजना हूँ)। मैं बस अपनी निर्भरता/रचनात्मक चिंताओं और तर्क चिंताओं की अवधि को अलग करना चाहता हूं।
मेरे जैसे लोगों को जो पहली बार नहीं मिला, डी निर्भरता इंजेक्शन के लिए खड़ा है (अंग्रेजी मेरी प्राकृतिक भाषा नहीं है) :) – LaGrandMere