डेलिगेशन पैटर्न

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

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

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

परिभाषा
गामा एट अल के परिचय में। 1994, ग्रैडी बूच ने प्रतिनिधिमंडल को परिभाषित किया:

"''प्रतिनिधिमंडल रचना को विरासत के रूप में पुन: उपयोग के लिए शक्तिशाली बनाने का एक तरीका है [Lie86, JZ91]। प्रतिनिधिमंडल में, दो ऑब्जेक्ट एक अनुरोध को संभालने में शामिल होते हैं: एक प्राप्त वस्तु अपने प्रतिनिधि को संचालन सौंपती है। Tयह उपवर्गों के समान है जो माता-पिता वर्गों के अनुरोधों को टालते हैं। लेकिन वंशानुक्रम के साथ, विरासत में मिली कार्रवाई हमेशा सी में इस सदस्य चर और स्मॉलटाक में स्वयं के माध्यम से प्राप्त वस्तु को संदर्भित कर सकती है। प्रत्यायोजन के समान प्रभाव को प्राप्त करने के लिए, प्राप्तकर्ता स्वयं को प्रतिनिधि के पास भेजता है ताकि प्रत्यायोजित संचालन रिसीवर को संदर्भित कर सके।."

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

<वाक्यविन्यास प्रकाश लैंग = कोटलिन> वर्ग आयत (वैल चौड़ाई: इंट, वैल ऊंचाई: इंट) { मज़ा क्षेत्र = चौड़ाई * ऊँचाई }

क्लास विंडो (वैल बाउंड्स: रेक्टेंगल) { // प्रतिनिधि मंडल मज़ा क्षेत्र = सीमा क्षेत्र }

भाषा समर्थन
कुछ भाषाओं में बिल्ट इन डेलिगेशन के लिए विशेष समर्थन है। उदाहरण के लिए, कोटलिन (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा में, हम लिख सकते हैं:

इंटरफ़ेस ClosedShape { मज़ा क्षेत्र : इंट }

वर्ग आयत (वैल चौड़ाई: इंट, वैल ऊंचाई: इंट): क्लोज्ड शेप { मज़ेदार क्षेत्र को ओवरराइड करें = चौड़ाई * ऊँचाई }

क्लास विंडो (निजी वैल बाउंड्स: क्लोज्ड शेप): क्लोज्ड शेप बाय बाउंड्स 

यह भी देखें

 * प्रतिनिधिमंडल (वस्तु उन्मुख प्रोग्रामिंग)
 * अग्रेषण (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
 * पहलू आधारित प्रोग्रामिंग
 * प्रतिनिधिमंडल (कम्प्यूटिंग)
 * सॉफ्टवेयर डिजाइन पैटर्न
 * मुखौटा पैटर्न
 * सिज़ोफ्रेनिया (वस्तु-उन्मुख प्रोग्रामिंग)

बाहरी संबंध

 * What Is Delegation, WikiWikiWeb
 * Delegation on Rosetta Code