2012-03-01 22 views
14

मैं एक ऐसे अनुप्रयोग को विकसित कर रहा हूं जिसे कुछ लाइब्रेरी के विभिन्न असंगत संस्करणों के साथ काम करने की आवश्यकता है। मेरा आंत वृत्ति ऐप और लाइब्रेरी के बीच एक एडाप्टर पेश कर रहा था जिसमें पुस्तकालय का उचित उद्देश्य होगा। फिर, किसी ने मुझे शिम के बारे में बताया। इसके बारे में ज्यादा साहित्य उपलब्ध नहीं है।शिम और मुखौटा/एडाप्टर पैटर्न के बीच क्या अंतर है?

मैं जानना चाहता था कि शिम कैसे मुखौटा और एडाप्टर डिजाइन पैटर्न से अलग हैं? और इसके कुछ लोकप्रिय उपयोग क्या हैं?

+1

यह भी देखें http://stackoverflow.com/questions/2116142/what-is-a-shim/12988556#12988556 –

+0

समान: https://softwareengineering.stackexchange.com/questions/66962/are-wrapper-and -शिम-समानार्थी –

उत्तर

11

मेरी आंखों में, एडाप्टर और शिम एक जैसा होगा।

दूसरी तरफ एक फेकाडे एक अलग उद्देश्य प्रदान करता है। यदि आप उम्मीद करते हैं कि आपके क्लाइंट कोड को पर्दे को वापस खींचने में सक्षम होना चाहिए, तो बोलने के लिए, और अपने ऑब्जेक्ट मॉडल का उपयोग किये बिना अंतर्निहित लाइब्रेरी तक पहुंचने की आवश्यकता है, यह एक फेकाडे होगा। फेकाडे अधिक जटिल प्रणाली के शीर्ष पर वस्तुओं/विधियों का सरलीकृत या सामान्य सेट प्रस्तुत करता है, लेकिन अतिरिक्त व्यवहार की आवश्यकता होने पर भी अंतर्निहित जटिलताओं तक पहुंच प्रदान करता है।

एडाप्टर का उपयोग का मतलब है कि आपका क्लाइंट कोड पूरी तरह से अंतर्निहित कार्यान्वयन विवरण से अनजान है।

+0

फेकाडे/एडाप्टर मतभेदों की अच्छी व्याख्या। – chakrit

+1

@ चाक्रिट लेकिन आपके उत्तर ने शिम्स और एडाप्टर के बीच मतभेदों को स्पष्ट किया –

9

आईएमओ, एडाप्टर और शिम समान रूप से कार्य करता है लेकिन इसका मतलब कुछ अलग है।

Shim आमतौर पर बहुत ही समान है, अगर सटीक नहीं है, तो इंटरफ़ेस का ऑब्जेक्ट "shimmed" के साथ सेट किया गया है। उदाहरण के लिए, प्रॉक्सी ऑब्जेक्ट्स को कुछ हद तक एक शिम की तरह माना जा सकता है।

जबकि एक Adapter आमतौर पर वस्तु होने के साथ इंटरफेस की काफी अलग हैं, अगर नहीं पूरी तरह से अलग, की स्थापना की है "अनुकूलित।"

"शिम" और "अनुकूलन" क्रिया पर ध्यान दें। इस तरह मैं आमतौर पर दोनों को अलग करता हूं।

संबंधित मुद्दे