मुझे कोड के उचित कार्यान्वयन के साथ एक वैचारिक समस्या है, जिसके लिए कई विरासत की आवश्यकता लगती है, जो कई ओओ भाषाओं में समस्या नहीं होगी, लेकिन जैसा कि परियोजना एंड्रॉइड के लिए है, इसमें मल्टीपल जैसी कोई चीज नहीं है extends
।
मैं गतिविधियों का एक गुच्छा, इस तरह के सरल रूप में विभिन्न आधार वर्ग, से प्राप्त होता है Activity
, TabActivity
, ListActivity
, ExpandableListActivity
, आदि इसके अलावा, मैं कुछ कोड के टुकड़े जो मैं में जगह की जरूरत है onStart
, onStop
, onSaveInstanceState
, onRestoreInstanceState
और अन्य मानक घटना सभी गतिविधियों में संचालकों।
यदि मेरे पास सभी गतिविधियों के लिए एक एकल आधार वर्ग है, तो मैं कोड को एक विशेष मध्यवर्ती व्युत्पन्न वर्ग में रखूँगा, और फिर इसे विस्तारित करने वाली सभी गतिविधियों का निर्माण करूँगा। दुर्भाग्य से, यह मामला नहीं है, क्योंकि कई आधार वर्ग हैं। लेकिन कोड के समान अंशों को कई मध्यवर्ती वर्गों में रखना एक रास्ता नहीं है, imho।
एक अन्य दृष्टिकोण सहायक वस्तु बनाने और उपर्युक्त घटनाओं के सभी कॉल को सहायक को सौंपने के लिए हो सकता है। लेकिन इसके लिए सहायक वस्तु को शामिल करने की आवश्यकता है, और सभी मध्यस्थों को सभी मध्यवर्ती वर्गों में पुनर्परिभाषित किया जाना चाहिए। इसलिए यहां पहले दृष्टिकोण के लिए बहुत अंतर नहीं है - अभी भी बहुत सारे कोड डुप्लिकेट हैं।
अगर विंडोज के तहत ऐसी ही स्थिति उत्पन्न हुई, तो मैं बेस क्लास ( Activity
एंड्रॉइड में क्लास के लिए "मेल खाती है" ) और वहां (एक ही स्थान पर) उचित संदेश ट्रैप कर सकता हूं ।
इसके लिए जावा / एंड्रॉइड में क्या किया जा सकता है? मुझे पता है कि जावा इंस्ट्रूमेंटेशन ( कुछ वास्तविक उदाहरणों के साथ ) जैसे दिलचस्प उपकरण हैं , लेकिन मैं एक जावा गुरु नहीं हूं, और यह निश्चित नहीं है कि इस विशिष्ट मामले में प्रयास करने के लायक है या नहीं।
अगर मुझे कुछ अन्य सभ्य समाधान याद आए, तो कृपया उनका उल्लेख करें।
अपडेट करें:
उन लोगों के लिए जो एंड्रॉइड में एक ही समस्या को हल करने में दिलचस्पी ले सकते हैं, मैंने एक सरल समाधान पाया है। एप्लिकेशन क्लास मौजूद है , जो अन्य चीजों के साथ, इंटरफ़ेस गतिविधि लिफ़्लेसाइकल कॉलबैक प्रदान करता है । यह वही है जो मुझे चाहिए कि हम सभी गतिविधियों के लिए महत्वपूर्ण घटनाओं में हस्तक्षेप करने और कुछ मूल्य जोड़ने की अनुमति दें। इस पद्धति का एकमात्र दोष यह है कि यह एपीआई स्तर 14 से शुरू होता है, जो कई मामलों में पर्याप्त नहीं है (एपीआई स्तर 10 के लिए समर्थन आज एक विशिष्ट आवश्यकता है)।
decordator pattern
। यह एक अंतिम उपाय है, जो वास्तव में दर्शाता है कि मैं क्या करना चाहता हूं - कोड दोहराव। अगर कोई अन्य विचारों को प्रेरित करता है तो मैं आपका उत्तर स्वीकार करूंगा। क्या मैं संभवतः "मध्यवर्ती" के कोड को सामान्य करने के लिए जेनरिक का उपयोग कर सकता हूं?