यह एक पुरानी पोस्ट है, लेकिन मैं किसी भी तरह से झंकार करने जा रहा हूं क्योंकि अन्य उत्तर किसी भी पैटर्न के उपयोग के दौरान क्या हो रहा है, इसके साथ सौदा नहीं करते हैं, वे अभ्यास की तुलना में सिद्धांत के बारे में अधिक प्रतीत होते हैं।
कैसे प्रतिनिधिमंडल और प्रेक्षक काम करते हैं
प्रतिनिधिमंडल के साथ प्रतिनिधि जो वास्तव में किसी विशेष घटना का जवाब देने जा रहा है, उसी क्षण संभावित घटना का स्रोत बन जाता है। आप इस श्रोता को एक प्रेक्षक के रूप में सोच सकते थे । ऑब्जर्वर पैटर्न के मामले में पर्यवेक्षक चुनता है कि यह जब भी इसे पसंद करता है, तब इसका निरीक्षण करता है; जब यह प्रेक्षक बनाम प्रतिनिधिमंडल की बात आती है तो निर्भरताएं उलट जाती हैं। प्रेक्षक पैटर्न के साथ एक समाचार पत्र और पर्यवेक्षकों के रूप में ग्राहकों के बारे में सोचो। जब संबंध बनते हैं तो पर्यवेक्षक नियंत्रण में होते हैं। प्रतिनिधिमंडल एक कर्मचारी और एक नियोक्ता के बारे में सोचते हैं। नियोक्ता तब नियंत्रण में होता है जब संबंध बन जाता है और वास्तव में विशिष्ट घटनाओं का प्रभारी कौन होता है। आम तौर पर कर्मचारी उन कार्यों को नहीं चुन सकते हैं जिन पर वे काम कर रहे हैं ...
कुछ तर्क प्रतिनिधि के पास एक पर्यवेक्षक हो सकता है लेकिन मुझे लगता है कि दोनों के बीच वास्तविक अंतर यह है कि इवेंट हैंडलिंग कैसे सौंपा जाता है। आप एक घटना के लिए एक प्रतिनिधि रजिस्टर कभी नहीं देखेंगे। यह तब तक कभी भी इस घटना को नहीं जान पाएगा जब तक कि ऐसा न हो जाए और प्रतिनिधि इस पर एक सार्वजनिक तरीका कहता है।
प्रत्यायोजन लाभ
यह पैटर्न बहुत कठोर है और अधिकांश रेजिड के साथ इसका सरल और आम तौर पर अधिक मजबूत डिजाइन है। यह आपको संभावित ईवेंट के स्रोत को आरम्भ करने के समय अपने ईवेंट हैंडलर को सामने रखने की घोषणा करने के लिए मजबूर करता है। यदि आपको सड़क को खोलने से पहले ट्रैफिक निदेशक को निर्देश देने के लिए किसी को यातायात की आवश्यकता है पर्यवेक्षक के मामले में आप ट्रैफिक पुलिस को यह बताएंगे कि किसी भी समय ट्रैफिक का निर्देशन करने के लिए उसे कब या क्यों ऐसा लगा।
प्रत्यायोजन दोष
इस डिजाइन का नुकसान यह है कि यह लचीला नहीं है। यदि आप किसी समाचार पत्र के लिए सदस्यता के लिए कुछ कोड लागू कर रहे थे तो अखबार / प्रतिनिधि को यह पहचानना होगा कि वे जो समाचार बनाए गए हैं, वे समाचारों को कैसे पढ़ सकते हैं। पर्यवेक्षक पैटर्न के साथ उन्हें बाद में किसी भी समय पंजीकृत किया जा सकता है और अखबार को केवल यह जानना होगा कि एक नए व्यक्ति ने हस्ताक्षर किए हैं।
कब प्रतिनिधि चुनें?
जब आपको सुनिश्चित करने के लिए एक विशिष्ट पर्यवेक्षक (ओं) की आवश्यकता होती है और आपके पास बदलने का कोई कारण नहीं होता है जो अवलोकन कर रहा है तो प्रतिनिधिमंडल पैटर्न का कठोर डिजाइन फायदेमंद होगा।
उदाहरण के लिए, किसी विशिष्ट त्रुटि के लिए पॉप-अप बनाने के लिए आपको एक क्लास / ऑब्जेक्ट की आवश्यकता होती है। ऐसे कई कारण नहीं हैं कि रन-टाइम पर आपको स्विच करने की आवश्यकता होगी जो एक विशिष्ट त्रुटि को हैंडल कर रहा है ताकि "आउट-ऑफ मेमोरी" त्रुटि को एक इकाई के रूप में दर्शाया जाए। संभावित हैंडलर की एक सरणी बनाना और फिर उन हैंडलर को "आउट-ऑफ मेमरी" त्रुटि के लिए पंजीकृत करना बहुत मायने नहीं रखेगा; यह इस स्थिति में पर्यवेक्षक पैटर्न का उपयोग करने का एक उदाहरण होगा। रन-टाइम में आप यह बदलना चाहते हैं कि किन तरीकों से कॉल आती है या "डेलीगेट" को वेरिएबल इवेंट्स के लिए बुलाया जाता है, लेकिन रन-टाइम में किसी इवेंट के लिए किसी इवेंट हैंडलर को स्वैप करना सामान्य नहीं है।
यह असंभव नहीं है कि आप जैसे प्रेक्षक पैटर्न में प्रतिनिधियों को स्वैप कर सकते हैं, इसकी जटिल है। वास्तविक दुनिया में शायद आप ट्रैफ़िक पुलिस को स्वैप करना चाहते हैं इसलिए एक नया प्रतिनिधि ट्रैफ़िक संभाल रहा है। कोई यह तर्क दे सकता है कि एक बेहतर डिजाइन मूल प्रतिनिधि को एक पुलिस स्टेशन बना देगा और एक भी पुलिस अधिकारी नहीं, लेकिन मैं पचा ...