ऑब्ज़र्वर डिज़ाइन पैटर्न एक पॉडकास्ट की तरह है

यदि आप पॉडकास्ट सुनते हैं, तो आप पहले से ही ऑब्जर्वर पैटर्न से परिचित हैं। वास्तव में, आप एक "पर्यवेक्षक" हैं।

यहां ऑब्जर्वर पैटर्न की परिभाषा दी गई है:

ऑब्जर्वर पैटर्न वस्तुओं के बीच एक-से-कई निर्भरता को परिभाषित करता है ताकि जब कोई वस्तु राज्य बदलती है, तो उसके सभी आश्रित अधिसूचित और स्वचालित रूप से अपडेट हो जाएं।

आइए पॉडकास्ट से संबंधित परिभाषा पर नजर डालें।

मुझे डेवलपर चाय नाम का एक दिलचस्प पॉडकास्ट मिला।

SUBSCRIBE बटन पर क्लिक करने के बाद, अब मैं उनकी ग्राहक सूची में हूँ।

जब डेवलपर चाय एक नया एपिसोड जारी करता है, तो ऐप मुझे और अन्य ग्राहकों को सूचित करेगा। यह हमारे लिए नया एपिसोड डाउनलोड करता है।

यह ऑब्जर्वर पैटर्न की परिभाषा है!

ऑब्जर्वर पैटर्न वस्तुओं के बीच एक-से-कई निर्भरता को परिभाषित करता है ताकि जब कोई वस्तु राज्य बदलती है, तो उसके सभी आश्रित अधिसूचित और स्वचालित रूप से अपडेट हो जाएं।

डेवलपर चाय पॉडकास्ट और ग्राहकों के बीच एक-से-कई संबंध हैं।

जब डेवलपर चाय बदलता है, जैसे कि एक नया एपिसोड जारी करता है, तो डेवलपर के सभी ग्राहक अधिसूचित और अपडेट किए जाते हैं।

इसे रूबी में लागू करते हैं।

एक साधारण संस्करण से शुरू करें।

पॉडकास्ट क्लास के पास एपिसोड की एक सूची है और सूची में add_episode करने के लिए एक विधि है।

फिर हम developer_tea पॉडकास्ट बना सकते हैं और इस तरह # 1 एपिसोड जोड़ सकते हैं:

जब भी कोई नया प्रकरण जारी होता है, मैं एक अधिसूचना प्राप्त करना चाहता हूं।

हम सूची में एक नया प्रकरण जोड़ने के बाद मुझे अपडेट कर सकते हैं:

और जब भी मुझे developer_tea से अपडेट मिलता है, मैं आगे जाकर नवीनतम एपिसोड डाउनलोड कर सकता हूं।

मुझे डेवलपर_ सुनने में इतना आनंद आता है कि मैं इसे अपने मित्र अम्बर को सुझाता हूं। अब, एम्बर इसे भी सदस्यता लेना चाहता है।

जब भी कोई नया प्रकरण जारी होता है, तो हमें यह सुनिश्चित करने की आवश्यकता होती है कि एम्बर को भी एक सूचना मिले।

हम्म, यह कोड वही करता है जो हम चाहते हैं।

लेकिन एक समस्या है।

हर बार जब हम एक ग्राहक जोड़ना चाहते हैं, तो हमें कक्षा को फिर से परिभाषित करना होगा।

क्या वर्ग को फिर से परिभाषित किए बिना ग्राहक सूची को अपडेट करने का एक तरीका है? Update

हम एक ग्राहक सूची रख सकते हैं! A

नया पॉडकास्ट वर्ग दो नए तरीकों की मदद से एक ग्राहक सूची रखता है: एक सब्सक्राइबर जोड़ने के लिए और एक सब्सक्राइबर हटाने के लिए। जब एक एपिसोड जारी होता है, तो हम प्रत्येक ग्राहक को अपडेट करते हैं।

दुर्भाग्य से, एम्बर पॉडकास्ट का उतना आनंद नहीं लेता जितना मैं करता हूं और सदस्यता समाप्त करने का फैसला करता हूं। हम उसे ग्राहक सूची से हटाने के लिए remove_subscriber विधि का उपयोग करते हैं।

Yay! आपने अभी ऑब्जर्वर पैटर्न सीखा है! Ser

प्रेक्षक पैटर्न के पीछे डिजाइन सिद्धांत।

ऑब्जर्वर पैटर्न ढीली युग्मन डिजाइन सिद्धांत का उपयोग करता है:

बातचीत करने वाली वस्तुओं के बीच शिथिल युग्मित डिजाइन के लिए प्रयास करें।

पॉडकास्ट वर्ग अपने ग्राहकों के बारे में ज्यादा नहीं जानता है। यह केवल जानता है कि प्रत्येक ग्राहक के पास एक अपडेट विधि है।

यह ढीला युग्मन पॉडकास्ट और इसके ग्राहकों के बीच निर्भरता को कम करता है। यह लचीलापन भी बढ़ाता है। जब तक इसकी अपडेट विधि होती है, एक ग्राहक कुछ भी हो सकता है: एक मानव, लोगों का एक समूह, एक जानवर, या यहां तक ​​कि एक कार।

टेकअवे:

  1. ऑब्जर्वर पैटर्न वस्तुओं के बीच एक-से-कई निर्भरता को परिभाषित करता है ताकि जब कोई वस्तु राज्य बदलती है, तो उसके सभी आश्रित अधिसूचित और स्वचालित रूप से अपडेट हो जाएं।
  2. ढीली युग्मन डिजाइन सिद्धांत: परस्पर क्रिया करने वाली वस्तुओं के बीच शिथिल युग्मित डिजाइन के लिए प्रयास करते हैं।

पढ़ने के लिए धन्यवाद। क्या आप जिस ऑब्जर्वर पैटर्न के बारे में सोच सकते हैं, उसके अन्य वास्तविक उदाहरण हैं?

मैं sihui.io साप्ताहिक में प्रकाशित करता हूं।

सदस्यता लें ताकि आप श्रृंखला के अगले लेख को याद न करें।

अगली बार हम बात करेंगे…