ब्रिज पैटर्न और निर्भरता इंजेक्शन के बीच अंतर क्या हैं?ब्रिज पैटर्न बनाम निर्भरता इंजेक्शन
दोनों पैटर्न के लिए हमारे पास एक अमूर्त वर्ग है जो एक और अमूर्तता के कार्यान्वयन के साथ है। नीचे ब्रिज पैटर्न यूएमएल आरेखण है।
ब्रिज पैटर्न और निर्भरता इंजेक्शन के बीच अंतर क्या हैं?ब्रिज पैटर्न बनाम निर्भरता इंजेक्शन
दोनों पैटर्न के लिए हमारे पास एक अमूर्त वर्ग है जो एक और अमूर्तता के कार्यान्वयन के साथ है। नीचे ब्रिज पैटर्न यूएमएल आरेखण है।
AFAIK निर्भरता इंजेक्शन नहीं एक डिजाइन पैटर्न है, लेकिन एक डिजाइन दिशानिर्देशSOLID principles में परिभाषित किया।
तो ब्रिज पैटर्नउस में निर्भरता इंजेक्शन का उपयोग करता है की आवश्यकता बहुरूपी व्यवहार जहां DrawingAPI
निर्माता में इंजेक्शन की जा रही है एपीआई के ठोस कार्यान्वयन से Shape
दसगुणा प्राप्त करने के लिए।
protected Shape(DrawingAPI drawingAPI){
this.drawingAPI = drawingAPI;
}
ब्रिज पैटर्न के उदाहरण से स्निपेट - एक डिजाइन पैटर्न
निर्भरता इंजेक्शन - डिजाइन दिशानिर्देश या सिद्धांत
मैं सहमत हूं कि आपने क्या कहा लेकिन जब मैंने विकी से परिभाषा पढ़ी, तो उसने कहा "निर्भरता इंजेक्शन एक सॉफ्टवेयर डिजाइन पैटर्न है जो सॉफ़्टवेयर पुस्तकालयों के नियंत्रण में बदलाव को लागू करता है" तो क्या आपको लगता है कि "डिज़ाइन पैटर्न" शब्द गलत है या यह होगा एक तरह के विचार में सही है? – fmchan
@fmchan IMHO निर्भरता इंजेक्शन एक डिजाइन पैटर्न के बजाय एक सिद्धांत है। यह कई गोफ डिजाइन पैटर्न का मूल बनाता है और यह सॉलिड के मौलिक सिद्धांत में से एक है। –
आप कई तंत्रों के माध्यम से निर्भरता इंजेक्शन कर सकते हैं । ब्रिज तंत्र उनमें से केवल एक है। सरल अंतरफलक कार्यान्वयन एक और है। कक्षा-बुनाई और अन्य गतिशील चालें अभी तक एक और।
निर्भरता इंजेक्शन एक विकास/डिजाइन तकनीक है, लेकिन नहीं एक पैटर्न के बाद से यह कई मायनों में लागू किया जा सकता है।
इस बारे में थोड़ा और सोचकर, आप निर्भरता इंजेक्शन एक सॉफ्टवेयर आर्किटेक्चर पैटर्न (लेकिन अभी भी एक डिज़ाइन नहीं) पर विचार कर सकते हैं, इस अर्थ में कि यह आर्किटेक्चरल चिंताओं (टेस्टेबिलिटी, कॉन्फ़िगरेशन, मॉड्यूलरिटी) की एक श्रृंखला को संबोधित करने का एक आम तरीका है। , आदि)।
दूसरे शब्दों में, निर्भरता इंजेक्शन प्रभावी रूप से एक पैटर्न पर विचार किया जा सकता है, लेकिन एक अलग स्तर में: आर्किटेक्चर, डिजाइन नहीं।
पुल पैटर्न Dependency Inversion पुल का काम करने के लिए उपयोग करता है यानी एब्स्ट्रक्शन बेस क्लास/इंटरफ़ेस कार्यान्वयन इंटरफ़ेस पर निर्भर करता है।
निर्भरता इंजेक्शन सबसे अक्सर इस्तेमाल किया निर्भरता उलट सिद्धांत का कार्यान्वयन है।
कई डिज़ाइन पैटर्न में समान यूएमएल आरेख हैं।
ब्रिज पैटर्न निर्भरता इंजेक्शन से बिल्कुल अलग है।
Dependency Injection - एक तरह से आसानी से या तो कार्यावधि में सम्मिलित करने के लिए (और स्वैप) कोड में निर्भरता या संकलन समय।
Bridge Pattern - एक तरह से विभिन्न प्रणालियों के बीच एक अतिरिक्त इंटरफ़ेस है। ब्रिज आपके कोड और अन्य सिस्टम के बीच संचार परत है।उदाहरण के लिए, जावा में दो सबसे अधिक उपयोग किए जाने वाले ब्रिज पैटर्न कार्यान्वयन जेडीबीसी (जो ड्राइवर चालक के माध्यम से डेटाबेस के साथ संचार करते हैं) और स्विंग (जो ऑपरेटिंग सिस्टम के यूआई के साथ संवाद करने के लिए ब्रिज का उपयोग करता है) हैं। इससे अन्य सिस्टम को आपके सिस्टम में संचार परत को प्रभावित या परिवर्तित किए बिना बदल दिया या बदला जा सकता है।
संपादित करें: यह उल्लेख करना भूल गया कि एक पुल भी पुल पर दोनों पक्षों को विकसित करने और दूसरे को प्रभावित किए बिना स्वतंत्र रूप से बदलने की अनुमति देता है। ऐसा इसलिए है क्योंकि पुल एक दूसरे से दोनों तरफ अलग करता है।
क्या यह कहना सही है कि पुल पैटर्न कार्यान्वयन तत्काल के लिए DI का उपयोग करता है? – Warlock
@ वारॉक हाँ मैं यह कहूंगा। डी एक अवधारणा है और खुद में एक डिजाइन पैटर्न नहीं है। इसमें पैटर्न की तरह कुछ भी नहीं है। डीओएफ पुस्तक प्रकाशित होने से पहले भी आयु का उपयोग किया जा रहा है। तो मैं कहूंगा कि यह एक डिजाइन पैटर्न की तुलना में ढीले युग्मित कोड लिखने के लिए एक दिशानिर्देश है। –
@Warlock आप ब्रिज कार्यान्वयन तत्काल के दोनों तरफ DI का उपयोग कर सकते हैं लेकिन इसकी आवश्यकता नहीं है। – dkatzel
मैं दावा करता हूं कि डीआई डिज़ाइन पैटर्न नहीं है। कुछ तर्क देंगे कि एमवीसी एक डिजाइन पैटर्न नहीं है, और इसमें कई कार्यान्वयन पैटर्न भी हैं। –