मुझे लगता है मैं यहाँ पहले से ही डि सवालों में से कुछ देखा है सीसी में निर्भरता इंजेक्शन कैसे करें?
में डि करने के लिए एक अच्छा तकनीकी समाधान के लिए देख रहा हूँ, लेकिन मैं किसी भी वास्तविक उदाहरण या ठोस कार्यान्वयन सुझावों के साथ एक नहीं देखा है।
तो, मान लीजिए कि हम निम्न स्थिति है:
हम ग में मॉड्यूल का एक सेट है; हम उन मॉड्यूल को दोबारा सुधारना चाहते हैं ताकि हम डीआई का उपयोग यूनिट परीक्षण चलाने के लिए कर सकें और इसी तरह।
प्रत्येक मॉड्यूल को प्रभावी ढंग से ग कार्यों का एक सेट के होते हैं:
module_function (...);
मॉड्यूल एक-दूसरे पर निर्भर करते हैं। अर्थात। आम तौर पर आपके पास एक कॉल हो सकता है जैसे:
int module1_doit(int x) {
int y = module2_dosomethingelse(x);
y += 2;
return(y);
}
इसके लिए DI के लिए सही दृष्टिकोण क्या है?
संभावित समाधान होने लगते हैं:
सभी मॉड्यूल कार्यों के लिए (1) का उपयोग करते हुए समारोह संकेत दिए गए हैं, और जब लागू एक समारोह इस (या समान) कार्य करें:
पूर्णांक y = modules-> module2-> dosomethingelse (x);
(2) एक ही प्रतीकों के साथ कई पुस्तकालयों (नकली, std, आदि) संकलित करें और सही कार्यान्वयन में गतिशील रूप से लिंक करें।
(2) यह ऐसा करने का सही तरीका प्रतीत हो रहा है, लेकिन कॉन्फ़िगर करने के लिए मुश्किल है और annoyingly आप बलों प्रत्येक इकाई परीक्षण के लिए कई बाइनरी बनाने के लिए।
(1) लगता है जैसे कि यह काम हो सकता है, लेकिन कुछ बिंदु पर अपने डि नियंत्रक एक स्थिति है जहाँ आप गतिशील रूप से एक सामान्य कारखाने समारोह (शून्य ( कारखाने को लागू करने की जरूरत है में फंस जा रहा है) (...) कहें) कई अन्य मॉड्यूल के साथ जिन्हें रनटाइम पर इंजेक्शन दिया जाना चाहिए?
क्या सी में ऐसा करने का एक और बेहतर तरीका है?
ऐसा करने का 'सही' तरीका क्या है?
उह। लोग अब बेवकूफ सी क्यों नहीं लिख सकते हैं? –
बेवकूफ परिभाषित करें। – Skurmedel
@ स्कुरमेडेल सी –