पृष्ठभूमि
मेरे पास एक प्रोजेक्ट है जो एक निश्चित प्रकार के हार्डवेयर डिवाइस के उपयोग पर निर्भर करता है, जबकि यह वास्तव में कोई फर्क नहीं पड़ता कि कौन उस हार्डवेयर डिवाइस को तब तक बनाता है जब तक कि वह वही करता है जो मुझे करने की आवश्यकता है। कहा जा रहा है कि, यहां तक कि दो उपकरणों को जो एक ही काम करने वाले हैं, वे एक ही निर्माता द्वारा नहीं किए जाने पर मतभेद होंगे। इसलिए मैं विशेष रूप से शामिल डिवाइस के मॉडल / मॉडल से एप्लिकेशन को डिकूप करने के लिए एक इंटरफ़ेस का उपयोग करने के बारे में सोच रहा हूं , और इसके बजाय इंटरफ़ेस में केवल उच्चतम-स्तर की कार्यक्षमता शामिल है। यहाँ मैं सोच रहा हूँ कि मेरी वास्तुकला कैसी दिखेगी:
- एक C # प्रोजेक्ट में एक इंटरफ़ेस परिभाषित करें
IDevice
। - किसी अन्य C # प्रोजेक्ट में परिभाषित लाइब्रेरी में एक कंक्रीट रखें, जिसका उपयोग डिवाइस का प्रतिनिधित्व करने के लिए किया जाएगा।
IDevice
इंटरफ़ेस को लागू करने के लिए ठोस उपकरण रखें ।IDevice
इंटरफ़ेस की तरह तरीकों हो सकता हैGetMeasurement
याSetRange
।- एप्लिकेशन को कंक्रीट के बारे में ज्ञान है, और कंक्रीट को एप्लिकेशन कोड में पास करें जो उपकरण का उपयोग करता है ( लागू नहीं )
IDevice
।
मुझे पूरा यकीन है कि इसके बारे में जाने का यह सही तरीका है, क्योंकि तब मैं यह पता लगाने में सक्षम हो जाऊंगा कि एप्लिकेशन को प्रभावित किए बिना किस डिवाइस का उपयोग किया जा रहा है (जो कभी-कभी लगता है)। दूसरे शब्दों में, इससे कोई फर्क नहीं पड़ेगा कि कंक्रीट के माध्यम से GetMeasurement
या SetRange
वास्तव में कार्यान्वयन कैसे होता है (जैसा कि डिवाइस के निर्माताओं के बीच भिन्न हो सकता है)।
मेरे दिमाग में एकमात्र संदेह यह है कि अब दोनों आवेदन, और डिवाइस का ठोस वर्ग दोनों उस लाइब्रेरी पर निर्भर करता है जिसमें IDevice
इंटरफ़ेस शामिल है। लेकिन, क्या यह बुरी बात है?
मैं यह भी नहीं देखता कि डिवाइस के बारे में एप्लिकेशन को जानने की आवश्यकता नहीं होगी, जब तक कि डिवाइस और IDevice
एक ही नामस्थान में न हों।
सवाल
क्या यह मेरे आवेदन और उस डिवाइस के बीच निर्भरता को कम करने के लिए एक इंटरफ़ेस को लागू करने के लिए सही दृष्टिकोण की तरह लगता है जो इसका उपयोग करता है?