मैंने एक बड़ी परियोजना पर आईओसी सिद्धांतों का उपयोग करने का निर्णय लिया है। हालांकि, मैं कुछ ऐसा करना चाहता हूं जो मुझे लंबे समय से परेशान कर रहा है। जिस निष्कर्ष के साथ मैं आया हूं वह यह है कि एक आईओसी कंटेनर एक वास्तुकला पैटर्न है, न कि एक डिजाइन पैटर्न। दूसरे शब्दों में, किसी भी वर्ग को इसकी उपस्थिति से अवगत नहीं होना चाहिए और कंटेनर को सभी घटकों को सिलाई करने के लिए एप्लिकेशन परत पर स्वयं का उपयोग किया जाना चाहिए। अनिवार्य रूप से, यह एक अच्छी तरह से डिजाइन ऑब्जेक्ट उन्मुख मॉडल के शीर्ष पर एक विकल्प बन जाता है। यह कहकर, हलचल प्रकारों को आईओसी कंटेनरों को बिना किसी जगह के छिड़कने के बिना कैसे पहुंचा जा सकता है (भले ही वे सारणीबद्ध हों या नहीं)? एकमात्र विकल्प जो मैं यहां देखता हूं वह अमूर्त कारखानों का उपयोग करना है जो ठोस प्रकारों को हल करने के लिए आईओसी कंटेनर का उपयोग करते हैं। यह मानक कारखानों के एक सेट के लिए स्वैप करने के लिए काफी आसान होना चाहिए। क्या यह एक अच्छा दृष्टिकोण है? क्या यहां किसी ने इसका इस्तेमाल किया है और यह आपके लिए कितना अच्छा काम करता है? क्या कुछ और उपलब्ध है?आईओसी के शीर्ष पर सार कारखाना पैटर्न?
धन्यवाद!
मुझे लगता है कि मैं लगभग वहां हूं। मेरे साथ यहाँ रहें :) चलो बस कहना है कि मेरे पास आईफ्रूट इंटरफ़ेस है जिसे क्लास ऐप्पल द्वारा कार्यान्वित किया गया है। इस ठोस प्रकार को पंजीकृत करने के बाद, मैं इसे विंडोज़ फॉर्म में अपने बटन क्लिक ईवेंट में उपयोग करना चाहता हूं। बटन ईवेंट से स्पष्ट रूप से आईओसी कंटेनर तक पहुंचने के बिना मैं कक्षा ऐप्पल कैसे प्राप्त करूं? –
यह निर्भर करता है: क्या आपके ऐप में केवल कई IFruit उदाहरण हैं, या केवल एक? यदि केवल एक ही है, तो बटन को हैंडलर पर क्लिक करके कक्षा में इंजेक्शन दिया जाना चाहिए। यदि बहुत सारे हैं, तो आपको सबसे अधिक संभावना है IFruitFactory जो अन्य रन-टाइम मानों से IFruit उदाहरण बना सकता है। बाद के मामले में, IFruitFactory इंजेक्शन निर्भरता होगी। –
केवल एक IFruit उदाहरण को ध्यान में रखते हुए, बटन क्लिक ईवेंट के साथ फॉर्म क्लास में इंजेक्शन देने का एकमात्र तरीका यह है कि अगर मैं आईफ्रूट इंटरफेस को शामिल करने के लिए फॉर्म कंस्ट्रक्टर बदलता हूं और फिर फॉर्म को स्वयं आईओसी कंटेनर के साथ कन्स्ट्रक्टर करने के लिए पंजीकृत करता हूं इंजेक्शन। क्या यह सही है? मदद करने के लिए धन्यवाद! –