5

जैसा कि मैंने एडाप्टर और प्रॉक्सी पैटर्न दोनों अलग-अलग/अलग-अलग वर्ग/ऑब्जेक्ट संचार के लिए प्रत्येक के साथ संगत बनाते हैं। और उनमें से दोनों संरचनात्मक पैटर्न हैं। मुझे लगता है कि वे दोनों एक दूसरे के साथ काफी समान हैं।एडाप्टर और प्रॉक्सी पैटर्न के बीच सटीक अंतर क्या है?

क्या कोई यह समझा सकता है कि उन्हें वास्तव में क्या करना है?

संपादित करें: मैं this प्रश्न के माध्यम से चला गया। लेकिन मैं एडाप्टर और प्रॉक्सी के बीच घनिष्ठ तुलना करना चाहता हूं।

+2

की संभावित डुप्लिकेट (http: // stackoverflow। कॉम/प्रश्न/350404/कैसे-करें-प्रॉक्सी-सजावट-एडाप्टर-और-पुल-पैटर्न-भिन्न) –

+0

@michael_j_ward मैं उस के माध्यम से चला गया था, लेकिन मुझे इन दोनों के बीच घनिष्ठ तुलना की आवश्यकता होगी 2. वेंक्स वैसे भी । –

उत्तर

10

एडाप्टर:

  1. यह दो असंबंधित इंटरफेस विभिन्न वस्तुओं के माध्यम से एक साथ काम करने, संभवतः एक ही भूमिका निभा रहा है।
  2. यह मूल इंटरफ़ेस को संशोधित करता है।

यूएमएल आरेख:

Difference between Bridge pattern and Adapter pattern

प्रॉक्सी::

enter image description here

आप इस एसई पद में काम कर कोड उदाहरण के साथ इस पद्धति के बारे में अधिक जानकारी प्राप्त कर सकते

प्रॉक्सी किसी अन्य ऑब्जेक्ट के लिए इसे नियंत्रित करने के लिए एक सरोगेट या प्लेसहोल्डर प्रदान करता है।

यूएमएल आरेख:

enter image description here

जिसमें प्रॉक्सी पैटर्न लागू होता है सामान्य स्थितियों रहे हैं।

  1. एक वर्चुअल प्रॉक्सी "बनाने के लिए महंगा" वस्तुओं के लिए एक जगह धारक है। वास्तविक वस्तु केवल तभी बनाई जाती है जब कोई क्लाइंट ऑब्जेक्ट को पहले अनुरोध/एक्सेस करता है।
  2. रिमोट प्रॉक्सी किसी ऑब्जेक्ट के लिए एक स्थानीय प्रतिनिधि प्रदान करता है जो एक अलग पता स्थान में रहता है। आरपीसी और कोर्बा में "स्टब" कोड यही है।
  3. सुरक्षात्मक प्रॉक्सी एक संवेदनशील मास्टर ऑब्जेक्ट तक पहुंच नियंत्रित करता है। "सरोगेट" ऑब्जेक्ट चेक करता है कि अनुरोध को अग्रेषित करने से पहले कॉलर के पास एक्सेस अनुमतियां आवश्यक हैं।
  4. एक स्मार्ट प्रॉक्सी ऐसी मांग पर एक वस्तु के सन्दर्भ की संख्या पर नज़र रखने और पहुँच को अस्वीकार करता है, तो एक निश्चित संख्या तक पहुँच जाता है, साथ ही डेटाबेस से एक वस्तु लोड हो रहा है स्मृति में के रूप में कुछ वस्तुओं के लिए परिष्कृत पहुँच प्रदान करता है

कार्य कोड के लिए, प्रॉक्सी पर tutorialspoint आलेख देखें।

कुंजी मतभेद:

  1. एडाप्टर अपने विषय के लिए एक अलग इंटरफेस प्रदान करता है। प्रॉक्सी एक ही इंटरफ़ेस
  2. एडाप्टर किसी मौजूदा ऑब्जेक्ट

आप proxy और adapter लेख के लेख sourcemaking में इन पैटर्न के बारे में अधिक जानकारी प्राप्त कर सकते के इंटरफेस को बदलने का मतलब है प्रदान करता है।

अन्य उपयोगी लेख: proxy dzone द्वारा

+0

बार-बार आपके उत्तर को बेहतर बनाने के आपके प्रयास के लिए बहुत बहुत धन्यवाद :) –

+0

मुझे अपने संपादन के साथ किया गया है :) –

2

here से:

एडाप्टर अपने विषय के लिए एक अलग इंटरफेस प्रदान करता है। प्रॉक्सी एक ही इंटरफ़ेस प्रदान करता है।

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

अब प्रॉक्सी एक ही इंटरफ़ेस का एक ऑब्जेक्ट है, और संभवतः एक ही बेस क्लास (या उप-वर्ग) है। यह केवल वास्तविक वस्तु (जैसा व्यवहार करता है) (वास्तविक व्यवहार) (वास्तविकता, संदर्भ, डेटा पहुंच इत्यादि) को अंतर्निहित, संदर्भित वस्तु के लिए आगे बढ़ाता है।

विद्युत समानता के लिए निकालना, यह ठीक होगा कि एडाप्टर का उपयोग क्लाइंट को दिखाई देता है - यानी, क्लाइंट "पता" एक एडाप्टर का उपयोग किया जा रहा है - जबकि प्रॉक्सी का उपयोग अधिकतर हो सकता है छुपा, या "पारदर्शी" - ग्राहक सोचता है कि एक वास्तविक वस्तु का उपयोग किया जा रहा है, लेकिन यह केवल एक प्रॉक्सी है।

0

एडाप्टर पैटर्न और प्रॉक्सी पैटर्न

अनुकूलक पद्धति

  1. भारतीय मोबाइल चार्जर (ग्राहक) के बीच अंतर अमरीका स्विच में फिट नहीं करता है बोर्ड (सर्वर)।
  2. आपको एडाप्टर का उपयोग करने की आवश्यकता है ताकि भारतीय मोबाइल चार्जर (क्लाइंट) संयुक्त राज्य स्विच स्विच बोर्ड (सर्वर) में फिट हो सके।
  3. बिंदु 2 से, आप समझ सकते हैं कि क्लाइंट संपर्क एडाप्टर सीधे। फिर एडाप्टर संपर्क सर्वर।

प्रॉक्सी पद्धति

  • सीधे एडाप्टर पैटर्न ग्राहक संपर्क अनुकूलक में। यह सर्वर से संपर्क नहीं करता है।
  • प्रॉक्सी पैटर्न में, प्रॉक्सी और सर्वर एक ही इंटरफेस लागू करता है। ग्राहक एक ही इंटरफ़ेस को कॉल करेगा।

कोड के माध्यम से समझ

class client{ 
    public void main(){ 
     //proxy pattern 
     IServer iserver = new proxy(); 
     iserver.invoke(); 

     //adapter pattern 
     IAdapter iadapter = new adapter(); 
     iserver.iadapter(); 
    } 
} 

class server implements IServer{ 
    public void invoke(){} 
} 

class proxy implments IServer{ 
    public void invoke(){} 
} 

class adapter implements IAdapter{ 
    public void invoke(){} 
} 

संदर्भ: [? कैसे प्रॉक्सी, डेकोरेटर, अनुकूलक, और पुल पैटर्न अलग है] Difference between Adapter pattern and Proxy Pattern

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