मार्कर इंटरफ़ेस पैटर्न

From Vigyanwiki

मार्कर इंटरफ़ेस पैटर्न कंप्यूटर विज्ञान में डिज़ाइन पैटर्न (कंप्यूटर विज्ञान) है, जिसका उपयोग उन भाषाओं के साथ किया जाता है जो वस्तुओं के बारे में रन-टाइम प्रकार की सुचना प्रदान करते हैं। यह मेटाडेटा को ऐसे श्रेणी से संबद्ध करने का साधन प्रदान करता है जहां भाषा में ऐसे मेटाडेटा के लिए स्पष्ट सहायता नहीं है।

इस पद्धति का उपयोग करने के लिए, श्रेणी (कंप्यूटर विज्ञान) एक मार्कर इंटरफ़ेस प्रदान करता है[1] (जिसे टैगिंग इंटरफ़ेस भी कहा जाता है) जो रिक्त इंटरफ़ेस है,[2] और वे विधिया जो इंटरफ़ेस के अस्तित्व के लिए उस श्रेणी परीक्षण के उदाहरणों के साथ सहभागिता करते हैं। जबकि विशिष्ट इंटरफ़ेस (कंप्यूटर विज्ञान) कार्यक्षमता निर्दिष्ट करता है (विधि घोषणाओं के रूप में) जिसे कार्यान्वयन श्रेणी को सहायता प्रदान करना होता हैं, मार्कर इंटरफ़ेस को ऐसा करने की आवश्यकता नहीं होती है। इस प्रकार के इंटरफ़ेस की मात्र उपस्थिति कार्यान्वयन श्रेणी के विशिष्ट आचरण को इंगित करती है। हाइब्रिड इंटरफेस, जो दोनों मार्कर के रूप में कार्य करते हैं और आवश्यक विधियों को निर्दिष्ट करते हैं, संभव हैं लेकिन अनुचित प्रकार से उपयोग किए जाने पर भ्रामक सिद्ध हो सकते हैं।

उदाहरण

जावा (प्रोग्रामिंग भाषा) से मार्कर इंटरफेस के अनुप्रयोग का एक उदाहरण है .html सीरियलाइजेबल इंटरफेस है:

package java.io;

public interface Serializable {
}

एक श्रेणी इस इंटरफ़ेस को यह इंगित करने के लिए प्रदान करता है कि इसके गैर-क्षणिक (कंप्यूटर प्रोग्रामिंग) डेटा सदस्यों ObjectOutputStream को लिखा जा सकता है। ObjectOutputStream निजी विधि writeObject0(Object,boolean) की श्रृंखला instanceof लेखन योग्यता निर्धारित करने के लिए परीक्षण सम्मलित है, जिनमें से एक के लिए Serializable इंटरफेस पर ध्यान दिया जाता हैं। यदि इनमें से कोई भी परीक्षण विफल हो जाता है, तो विधि NotSerializableExceptionको प्रदान करती हैं।

समालोचना

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

मेटा डेटा को सीधे समर्थन देने के लिए भाषा के लिए एक और समाधान है:

  • .NET फ्रेमवर्क और जावा (सॉफ्टवेयर प्लेटफॉर्म) दोनों (जावा 5 (1.5) के अनुसार) ऐसे मेटाडेटा के लिए समर्थन प्रदान करते हैं। .NET में, उन्हें कस्टम विशेषताएँ कहा जाता है, जावा में उन्हें जावा एनोटेशन कहा जाता है। अलग-अलग नामों के बावजूद, वे वैचारिक रूप से एक ही चीज़ हैं। उन्हें कक्षाओं, सदस्य चर, विधियों और विधि मापदंडों पर परिभाषित किया जा सकता है और प्रतिबिंब (कंप्यूटर विज्ञान) का उपयोग करके इसका उपयोग किया जा सकता है।
  • पायथन (प्रोग्रामिंग लैंग्वेज) में, ज़ोप और प्लोन (सॉफ्टवेयर) में मार्कर इंटरफ़ेस शब्द आम है। इंटरफेस को मेटाडेटा के रूप में घोषित किया जाता है और उपवर्ग उपयोग कर सकते हैं implementsOnly घोषित करने के लिए कि वे अपने सुपर क्लास से सब कुछ लागू नहीं करते हैं।

यह भी देखें

संदर्भ

  1. Bloch, Joshua (2008). "Item 37: Use marker interfaces to define types". Effective Java (Second ed.). Addison-Wesley. p. 179. ISBN 978-0-321-35668-0.
  2. "जावा में मार्कर इंटरफ़ेस". GeeksforGeeks (in English). 2017-03-06. Retrieved 2022-05-01.


अग्रिम पठन

Effective Java[1] by Joshua Bloch.

  1. Bloch, Joshua (2018). Effective Java (Third ed.). Boston. ISBN 978-0-13-468599-1. OCLC 1018432176.{{cite book}}: CS1 maint: location missing publisher (link)