संपादित : साथ @ Alrid की टिप्पणी
tl; डॉ
public abstract class Subscriber<T> implements Observer<T>, Subscription
तो एक सब्सक्राइबर ऑब्जर्वर का कार्यान्वयन है , सदस्यता पर अतिरिक्त शब्दार्थ के साथ (यह अन-सब्सक्रिप्शन के बारे में अधिक है)। आपके प्रश्न में कोड केवल यह दिखाता है कि यह Observer
कार्यान्वयन (सामान्य प्रोग्रामिंग अभ्यास) के बजाय इंटरफ़ेस को पास करता है।
इसके अलावा यह कोड एक रिटर्न देता है Subscription
, ऐसा इसलिए हो सकता है क्योंकि इस कोड के लेखक ने सोचा था कि ग्राहक को केवल Subscription
तरीकों तक पहुंच होनी चाहिए , बिना पालन किए गए तत्वों के उपयोग के बिना। यह एक प्रोग्रामर त्रुटि हो सकती है।
लम्बी कहानी
वास्तव में आपको इस वेबसाइट (या पुस्तक) की सामग्री को पढ़ना चाहिए: http://www.introtorx.com
यह Rx.Net के बारे में है, लेकिन अवधारणाएं बहुत समान हैं, वे एरिक मीजर द्वारा बनाए गए थे और RxJava कार्यान्वयनकर्ताओं ने उनका अनुसरण किया था ( अगर जावा भाषा पर लागू होता है)।
यह पृष्ठ आपको दिलचस्पी लेगा (यह दूसरा अध्याय है): कीटेप्स
यहाँ आप पहले पैराग्राफ में पढ़ेंगे:
आरएक्स के साथ काम करते समय समझने के लिए दो महत्वपूर्ण प्रकार हैं, और सहायक प्रकारों का एक सबसेट जो आरएक्स को अधिक प्रभावी ढंग से सीखने में आपकी सहायता करेगा। IObserver और IObservable Rx के लिए मौलिक बिल्डिंग ब्लॉक्स हैं, जबकि ISubject के कार्यान्वयन से Rx के लिए डेवलपर्स के लिए सीखने की अवस्था कम हो जाती है।
...
अनिवार्य रूप से आरएक्स को ऑब्जर्वर पैटर्न की नींव पर बनाया गया है। .NET पहले से ही ऑब्जर्वर पैटर्न को लागू करने के कुछ अन्य तरीकों को उजागर करता है जैसे मल्टीकास्ट डेलिगेट्स या इवेंट्स (जो आमतौर पर मल्टीकास्ट डेलिगेट्स हैं)।
भले ही प्रकार / एपीआई थोड़ा अलग हो, आप इस पुस्तक के साथ बहुत कुछ सीखेंगे, शायद कुछ ब्लॉगों की तुलना में अधिक।
यह पुस्तक क्या नहीं कहती है ( ... क्योंकि यह RxJava कार्यान्वयन में है )
RxJava मुख्य डेवलपर ने इस समय थोड़ी भिन्नता दिखाई (PR # 792 देखें ) जो दो प्रकार के अनुबंधों को अलग करने की अनुमति देता है:
- सूचना ->
Observer
- (संयुक्त राष्ट्र) सदस्यता ->
Subscription
इस परिवर्तन ने RxJava पुस्तकालय के कार्यान्वयन वर्गों की इन चिंताओं को बेहतर ढंग से व्यक्त / विभाजित करने की अनुमति दी।
हालाँकि, एक पुस्तकालय उपयोगकर्ता के रूप में, RxJava पुस्तकालय के वास्तविक कार्यान्वयन का उपयोग करना पर्याप्त होना चाहिए।
एक ग्राहक को लागू करने के लिए बहुत अधिक ज्ञान, काम और देखभाल की आवश्यकता होती है, वास्तव में सदस्यता योग्य शब्दार्थ बहुत महत्वपूर्ण होते हैं जो स्रोत के प्रकार पर निर्भर करते हैं (गर्म या ठंडा? महंगा बनाने के लिए?)
ऊपर के मामलों की Subscriber
बजाय एक्सपोज़ करना Observer
ज्यादातर मामलों में कोड के साथ हस्तक्षेप नहीं करेगा, लेकिन जब तक कि उन सदस्यता वाले शब्दार्थों की आवश्यकता न हो, तब तक इसका उपयोग नहीं किया जाता है। लेकिन अंत में एक को लागू करने Subscriber
, और कुछ नुकसान में शामिल हो सकते हैं जैसे:
- कार्यक्षमता के लिए संसाधन खर्च करें जो आप उपयोग नहीं करेंगे
- दूसरे वर्ग से विरासत में नहीं मिल सकता
- गलत संयुक्त राष्ट्र सदस्यता कोड लिखें
- एक अलग संदर्भ के लिए एक गलत कोड या सही कोड को कॉपी / पेस्ट कोड