2011-12-01 25 views
5

मुझे object1 पर कुछ कार्य करने की आवश्यकता है जब कुछ राज्य परिवर्तन object2 पर होता है। मैं एंड्रॉयड में नमूदार पैटर्न का उपयोग करने के लिए कोशिश कर रहा था, मैं ऑब्जर्वर और प्रत्यक्ष वर्गों का उपयोग करने का मतलब है, तो object1 ऑब्जर्वर को लागू करता है और object2 नमूदार फैली हुई है। दुर्भाग्यवश, object2 पहले से ही किसी अन्य वर्ग से फैली हुई है, इसलिए मैं इसे अवलोकन के विस्तार के रूप में परिभाषित नहीं कर सकता।पर्यवेक्षण पैटर्न के लिए वैकल्पिक?

क्या इस पैटर्न का उपयोग करने के लिए कोई अन्य विकल्प है? शायद अन्य वर्ग जो मुझे इस व्यवहार को करने की अनुमति देते हैं?

धन्यवाद।

उत्तर

8

सीधे शब्दों में object2 के प्रकार Observable के एक क्षेत्र को जोड़ने कर रहे हैं जो पर्यवेक्षकों जोड़ रहे हैं करने के लिए और जो notifyObservers() पर एक Listener इंटरफेस की आवश्यकता होगी कुछ बदलता है जब कहा जाता है।

यह वही "विरासत से अधिक पक्ष रचना" का मतलब है।

+0

धन्यवाद! उतना मेरे लिये पर्याप्त है। कोस्टजा का समाधान भी अच्छा लगता है लेकिन इसके लिए अतिरिक्त प्रयास की आवश्यकता है। – forumercio

+0

यह एक "खतरनाक" समाधान है। हालांकि यह मेरे लिए भी काम करेगा। लेकिन इसके अतिरिक्त आपको अपनी कक्षा को अंतिम रूप देने या कम से कम सभी प्रासंगिक संपत्तियों को निजी के रूप में घोषित करने के लिए उल्लेख किया जाना चाहिए था। यह आपके एकमात्र तरीके से काम करने का एकमात्र तरीका है, जब आपकी कक्षा किसी अन्य द्वारा विस्तारित की जाती है ... – Sauer

6

निर्मित प्रत्यक्ष वर्ग का विस्तार के रूप में यह अपने वर्ग पदानुक्रम बाधित पर्यवेक्षक पैटर्न लागू करने के लिए एक नहीं बल्कि बुरा विकल्प है, लेकिन आप पहले से ही पता है।

एक बेहतर तरीका अपने स्वयं के Observable इंटरफेस को परिभाषित करने और अपने वर्ग इसे लागू करने देने के लिए किया जाएगा। तुम भी श्रोता कक्षाएं

तरीकों से आप अपने Observable इंटरफ़ेस में की आवश्यकता होगी addListener(Listener listener) और removeListener(Listener listener)

संबंधित मुद्दे