java - Android MVP: एक इंटरेक्टर क्या है?




design-patterns android-project-template (3)

इंटरेक्टर क्या है? यह एमवीपी डिज़ाइन के भीतर कैसे फिट होता है? इंटरेक्टर कोड का उपयोग करने के क्या फायदे / नुकसान हैं?


इंटरएक्टर में एप्लिकेशन के उपयोग-मामले होते हैं, जिसका अर्थ है कि इसमें प्रोजेक्ट के व्यावसायिक डोमेन के सभी कार्यान्वयन शामिल होंगे।

यहां एमवीपी पैटर्न का उपयोग करते हुए आर्किटेक्चर एंड्रॉइड एप्लिकेशन पर एक बहुत अच्छी तरह से व्यवस्थित लेख है , जो मैं आपको अध्ययन करने के लिए अत्यधिक सलाह देता हूं।

इसके अलावा मैंने MVP पैटर्न और इंस्टाग्राम एपीआई का उपयोग करते हुए JuicyInsta नाम से एक एंड्रॉइड एप्लिकेशन बनाया है, जिसे यहाँ JuicyInsta JuicyInsta


भगवान गतिविधि समस्या से निपटने के लिए एमवीपी मौजूद है (एक गतिविधि / टुकड़ा जिसमें बहुत अधिक लाइनें हैं)।

हालांकि यह अनिवार्य नहीं था (आप किसी भी पैटर्न में जिसे आप चाहते हैं कोड कर सकते हैं), कई डेवलपर्स सहमत हैं कि एमवीपी एंड्रॉइड के लिए उपयुक्त है। यह आपके स्रोत कोड को क्लीनर, परीक्षण योग्य, बनाए रखने योग्य और मजबूत बनाता है।

आप अपने "मॉडल / नियंत्रक" के रूप में एक इंटरेक्टर के बारे में सोच सकते हैं। एक सहभागिताकर्ता आपके डेटाबेस, वेब सेवाओं या किसी अन्य डेटा स्रोत से डेटा प्राप्त करेगा। डेटा प्राप्त करने के बाद, इंटरेक्टर डेटा को प्रस्तोता को भेज देगा। इस प्रकार, अपने UI में परिवर्तन कर रहा है।

एक अलग वर्ग में इंटरएक्टर का उपयोग करने के लाभ यह है कि यह आपकी कक्षा को खराब कर देगा, इस प्रकार यह क्लीनर और परीक्षण योग्य है। ज़रूर, आप इंटरेक्टर को अपने प्रस्तोता की आंतरिक कक्षा में रख सकते हैं, लेकिन क्या बात है? अपने प्रस्तोता में अंतःप्रेरणा लगाने का नुकसान यह है कि यह आपके प्रस्तोता वर्ग को पढ़ने और प्रबंधित करने के लिए बड़ा और अपेक्षाकृत कठिन बना देगा।

अपडेट: बेशक यह केवल एक अति-सरलीकरण है, अगर आप गहराई से खुदाई करना चाहते हैं तो आप फ़र्नेंडो सीजस ब्लॉग या एंटोनियो लीवा ब्लॉग देख सकते हैं


सहभागिता एक वर्ग है जो डोमेन लेयर को प्रेजेंटेशन लेयर से अलग करता है। सरल शब्दों में यह व्यापार तर्क को कोड से अलग लिखने का तरीका प्रदान करता है जो यूआई में हेरफेर करने के लिए उपयोग किया जाता है (यूआई / चेतन / नेविगेशन के लिए डेटा को बाइंड करके)।

तो इंटरेक्टर प्रस्तुतकर्ता / ViewModel और रिपोजिटरी पैटर्न के बीच मध्यस्थ है।

मैंने MVP में इंटरेक्टर पैटर्न का उपयोग नहीं किया है, मैंने इसे MVVM में उपयोग किया है। UseCases के लिए इंटरचेंजर को परस्पर उपयोग किया जा सकता है।

उदाहरण के लिए, सूची में दिखाने के लिए श्रेणियों को लाने का उपयोग करने की सुविधा देता है (उदाहरण के लिए, प्रस्तुतकर्ता MVP का प्रतिनिधित्व करता है और ViewModel MVVM पैटर्न का प्रतिनिधित्व करता है)।

  • व्यू (एक्टिविटी / फ्रैगमेंट) कैटेलिस्ट प्राप्त करने के लिए प्रस्तुतकर्ता / ViewModel की विधि को कॉल करेगा।
  • तब प्रस्तुतकर्ता / ViewModel श्रेणीवादी प्राप्त करने के लिए इंटरेक्टर विधि को कॉल करेगा
  • इंटरलेक्टर कैटेस्टलिस्ट पाने के लिए रिपॉजिटरी (कैटेगरिपोसेरी) मेथड कहेगा
  • रिपॉजिटरी में यह तय करने का तर्क होगा कि वेब सर्विस (रिमोट डेटा सोर्स) या डीबी स्टोरेज (लोकल डेटा सोर्स) या कैशे (अस्थायी स्टोरेज - रिपॉजिटरी क्लास में वेरिएबल हो सकता है) से कैटेगिरी लाने के लिए।
  • रिपॉजिटरी कैटेस्टलिस्ट (चयनित डेटा स्रोत से प्राप्त) इंटरएक्टर के पास वापस आ जाएगी
  • इंटरेक्टर या तो श्रेणीवादी (कुछ प्रारूपण आदि) पर प्रक्रिया करेगा और इसे प्रस्तुतकर्ता / ViewModel को भेजेगा। यदि कोई प्रसंस्करण की आवश्यकता नहीं है, तो सहभागिता सीधे प्रस्तुतकर्ता / ViewModel को सूची भेज सकती है
  • प्रस्तुतकर्ता / ViewModel, कैटेलिस्ट के साथ View की विधि को पैरामीटर के रूप में कहेगा
  • एनीमेशन के साथ या उसके बिना देखें

कृपया ध्यान दें कि इस प्रक्रिया में इस रिपॉजिटरी-> इंटरप्रेटर-> प्रस्तोता / ViewModel जैसे डेटा प्रवाह का उपयोग करने के बजाय इंटरफेरर से बचा जा सकता है, संचार रिपॉजिटरी-> प्रस्तुतकर्ता / ViewModel द्वारा इस तरह से किया जा सकता है। यहां प्रस्तुतकर्ता / ViewModel प्रस्तुति के साथ-साथ डोमेन परत का भी हिस्सा होगा। जैसा कि मैंने ऊपर कहा कि इन्टर लेयर इन दो लेयर के विभाजक के रूप में कार्य करता है।

संदर्भ के लिए इस अवधारणा को समझाने के लिए ये कुछ संक्षिप्त रूप से लिखे गए ब्लॉग हैं

मुझे उम्मीद है कि इससे आपको बेहतर तरीके से इंटरएक्टर की भूमिका समझने में मदद मिलेगी। हैप्पी कोडिंग !!!







android-project-template