मेरे अनुभव के लिए, एक ईवेंट श्रोता पैटर्न पर्यवेक्षक डिजाइन पैटर्न से एक अलग बात है। यह सिर्फ एक अलग नाम नहीं है या जिसका हिस्सा है।
मुझे इस ठोस तरीके से बात करनी है। उदाहरण के लिए, यह page एक ईवेंट श्रोता प्रणाली का सी # कार्यान्वयन देता है। इस प्रणाली में, एक श्रोता एक इवेंट हैंडलिंग फ़ंक्शन को सिंगलटन क्लास Events
के साथ पंजीकृत करता है और दावा करता है कि यह किसी विशेष प्रकार की घटना को संभाल सकता है। Events
प्रत्येक प्रकार की घटना को अपने हैंडलर फ़ंक्शन पर मैप करने के लिए एक शब्दकोश को बनाए रखता है। दूसरी ओर, किसी भी वर्ग जो घटना को ट्रिगर करना चाहता है उसे सिंगलटन के फ़ंक्शन Events.instance.Raise()
के माध्यम से ऐसा करने की आवश्यकता है।
यहाँ हम 3 अंतर देख सकते हैं:
सबसे पहले उद्देश्य दो पैटर्न के अलग हैं: श्रोता डिजाइन पैटर्न,/घटना का पता लगाने दसगुणा घटना कोड से निपटने से कोड ला रहा है ताकि जब कोडों को संभालने वाली नई घटनाओं को बदलना या जोड़ना, यह अन्य घटनाओं को संभालने वाले कोडों को प्रभावित नहीं करता है; पर्यवेक्षक डिजाइन पैटर्न कुछ वस्तुओं को किसी अन्य वस्तु के परिवर्तनों का पालन करने के लिए बनाना है।
डेटा संरचना भी अलग है। श्रोता डिजाइन पैटर्न में, प्रत्येक प्रकार की घटना को अपने हैंडलिंग विधि में मैप करने के लिए केवल एक वैश्विक शब्दकोश है। यह मानचित्रण 1 से 1 है। ऑब्जर्वर पैटर्न में रहते हुए, प्रत्येक मनाया विषय पर्यवेक्षकों की एक सूची बनाए रखता है। यह मैपिंग 1 से कई है: कई पर्यवेक्षकों के लिए एक विषय। इस तरह के 1 से कई विषय-पर्यवेक्षक संबंधों के कई उदाहरण हो सकते हैं।
व्यवहार अलग है। श्रोता डिजाइन पैटर्न में, जब कोई घटना होती है, तो ईवेंट राइज़र वैश्विक मध्यस्थ (सिंगलटन Events.instance
) को सूचित करता है, क्योंकि इसमें ईवेंट हैंडलर के बारे में कोई जानकारी नहीं है। ऑब्जर्वर पैटर्न में, जब कोई परिवर्तन होता है, मनाया गया विषय सीधे सभी पर्यवेक्षकों को सूचित करता है।
मैं कहूंगा कि एक ईवेंट श्रोता एक पर्यवेक्षक है, है ना? –
[पर्यवेक्षक डिजाइन पैटर्न बनाम "श्रोताओं"] (https://stackoverflow.com/questions/3358622/) – sepehr