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

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

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

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

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

"Delegation is a way to make composition as powerful for reuse as inheritance [Lie86, JZ91]. In delegation, two objects are involved in handling a request: a receiving object delegates operations to its delegate. This is analogous to subclasses deferring requests to parent classes. But with inheritance, an inherited operation can always refer to the receiving object through the member variable in C++ and   in Smalltalk. To achieve the same effect with delegation, the receiver passes itself to the delegate to let the delegated operation refer to the receiver."

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

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

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

 * What Is Delegation, WikiWikiWeb
 * Delegation on Rosetta Code