सबसे पहले, मुझे पता है कि मॉडल व्यू प्रेजेंटर के साथ अलग-अलग कार्यान्वयन होते हैं, और मेरे दिमाग में जब तक आपके पास अमूर्तता की परतें स्पष्ट रूप से परिभाषित होती हैं और उनकी नियुक्त भूमिकाएं होती हैं तो आप कैसे इस पैटर्न को लागू करने के लिए खुला है। मैं इस पैटर्न को कुछ ऐप्स में कार्यान्वित कर रहा हूं जहां केवल एक Activity
था। मैंने अब एक नई परियोजना शुरू की है जिसमें कई गतिविधियां हैं और Fragments
संलग्न हैं, जिनमें नेस्टेड टुकड़े (ViewPager
) शामिल हैं।एकाधिक गतिविधियां/टुकड़े और मॉडल देखें प्रेजेंटर पैटर्न
अब मैं इस परियोजना में एमवीपी का अनुवाद करने की कोशिश कर रहा हूं और मैंने एक अवधारणा दीवार मारा है और कुछ मार्गदर्शन और अंतर्दृष्टि पसंद करेंगे।
अब तक मैं ऊपर ढांचा बनाया और एक 1 करने के लिए शुरू कर दिया है: के साथ देखें & प्रस्तुतकर्ता (Activity
या Fragment
की परवाह किए बिना) 1 संबंध। मुझे लगता है कि यह ठीक है, हालांकि अगर उदाहरण के लिए मैंने Activity
से कुछ करने का अनुरोध भेजा है तो इसके प्रेजेंटर को देखें, जो परिणाम Activity
पर परिणाम देता है देखें कि मैं परिणाम को प्रचारित करने के बारे में कैसे जाऊं यानी अन्य सभी गतिविधियां/टुकड़े अपडेट करें जो वर्तमान में Paused()
या Stop()
स्थिति में नहीं हैं। मुझे लगता है कि इस मामले में एक केंद्रीय प्रेजेंटर होना चाहिए जो सभी आवश्यक गतिविधि और टुकड़े दृश्यों को अपडेट करता है, लेकिन मुझे यकीन नहीं है कि यह करने के बारे में कैसे जाना है।
वर्तमान में जब प्रत्येक Activity
और Fragment
यह एक प्रस्तुतकर्ता वर्ग का एक नया उदाहरण बनाता है, एक संदर्भ (क्रियाएँ और टुकड़े को अपने स्वयं के इंटरफेस को लागू), के रूप में अपने आप में गुजर बनाई गई है जो एक WeakReference
के रूप में प्रस्तोता की दुकानों और आह्वान कर सकते हैं परिणाम लौटने पर प्रासंगिक इंटरफ़ेस विधियां।
जब भी Fragments
दस्तावेज़ों के अनुसार एक दूसरे के साथ संवाद करना चाहते हैं और संलग्न Activity
आपको कॉलबैक इंटरफ़ेस का उपयोग करना चाहिए। इस बात को ध्यान में रखते हुए मेरे पास एक कॉलबैक इंटरफेस होना चाहिए कि गतिविधि लागू हो और Fragments
कॉलबैक जब भी वे कुछ मांगें, तो संक्षेप में केवल गतिविधि में एक प्रेजेंटर और मॉडल परत होगी जो विभिन्न अनुरोध करने के लिए टुकड़ों को कॉलबैक करना होगा ?
क्षमा करें अगर यह थोड़ा उलझन में लगता है, उम्मीद है कि यह समझने के लिए पर्याप्त स्पष्ट है कि मैं क्या हासिल करना चाहता हूं, और यदि मैं सही रेखाओं के साथ सोच रहा हूं ... या पूरी तरह से निशान से बाहर!
आपकी टिप्पणियों और विचारों के लिए धन्यवाद। मुझे लगता है कि मैं केवल प्रेजेंटर का उपयोग गतिविधि के साथ करूँगा, और इसे टुकड़े को अद्यतन करने में मदद करता हूं। सिंगलटन के साथ मेमोरी लीक? यह तभी होगा जब सिंगलटन के पास गतिविधि या टुकड़े का संदर्भ था (मूल रूप से जीवनशैली के साथ कुछ जो आ सकता है और जा सकता है)? यदि ऐसा है, तो मैं किसी अन्य चीज़ के लिए सिंगलटन का उपयोग करता हूं, लेकिन इसमें कोई संदर्भ नहीं है। मैं गतिविधियां और टुकड़े (लाइफसाइक्ल कॉलबैक के साथ कुछ भी) के साथ 'वीक रेफरेंस' का उपयोग करता हूं क्योंकि मुझे कॉन्फ़िगरेशन परिवर्तनों पर मजबूत संदर्भ नहीं हैं, और 'वीक रेफरेंस' जीसी –
की अनुमति देता है यदि आपका प्रस्तुतकर्ता सिंगलटन नहीं है तो आपको ' कॉन्फ़िगरेशन परिवर्तनों के साथ कोई समस्या नहीं है क्योंकि प्रस्तुतकर्ता स्वयं भी पुनर्निर्मित किया जाएगा। यदि आप एक बनाए गए टुकड़े का उपयोग करते हैं तो आपको 'वीक रेफरेंस' की आवश्यकता हो सकती है। वैसे भी, ऐसा लगता है कि आप स्पष्ट रूप से समझते हैं कि कमजोर संदर्भ कैसे काम करते हैं, इसलिए मुझे इसे समझाने की आवश्यकता नहीं है .. धन्यवाद। –
कोई प्रस्तुतकर्ता सिंगलटन नहीं है, प्रस्तुतकर्ता के निर्माण के बाद मैं इसे 'हैश मैप <स्ट्रिंग, ऑब्जेक्ट>' में हेडलेस बनाए रखा खंड के भीतर संदर्भित करता हूं, और गतिविधि के साथ कॉन्फ़िगरेशन परिवर्तनों पर इसका संदर्भ वापस प्राप्त करता हूं। ... बस जब मुझे लगता है कि मैं जावा में कुछ समझता हूं तो ऐसा लगता है कि मुझे हमेशा एक वक्र गेंद फेंकती है! आपके सुझाव के लिए धन्यवाद। –