मैं clean architecture के बारे में कुछ लेख पढ़ रहा हूं, और इसे एंड्रॉइड में कैसे कार्यान्वित किया जा सकता है। मैंने sample app देखा जो इसके एंड्रॉइड कार्यान्वयन को दिखाता है। इसके अलावा, मैं एक अच्छा talk on Clean architecture on Androidस्वच्छ वास्तुकला। प्रस्तुतकर्ता की नौकरियां क्या हैं?
तो, मैं ज्यादातर अवधारणाओं को समझता हूं, लेकिन कुछ स्पष्टता है कि मैं कुछ चीजों को प्राप्त करना चाहता हूं।
मेरी समझ के अनुसार,
- परत देखें बाहरी परत जो यूआई के साथ संबंधित है, और ढांचे से संबंधित सामान
- प्रस्तोता दृश्य के लिए प्रत्यक्ष संदेश वाहक है, जो उपयोगकर्ता इनपुट स्वीकार करता है , और उपयोग केस परत या इंटरैक्टर परत पर इसे पास करके इस पर आधारित कुछ उपयोग मामलों को निष्पादित करता है।
- Interactor यूज-केस कार्यान्वित करता है, इसे वापस प्रस्तोता द्वारा भेजे गए कॉलबैक करने के लिए देते हैं,
- प्रस्तुतकर्ता फिर एक दृश्य के समझ में आता डेटा संरचना (एक ViewModel) में इस परिणाम को बदल देता है और सिर्फ इसे वापस देखने के लिए गुजरती हैं।
मैं भंडार की तरह भीतरी परतों के बारे में अधिक जानकारी के लिस्टिंग नहीं कर रहा हूँ के बाद से मेरे सवाल उपर्युक्त चरणों
यहाँ से संबंधित है, प्रस्तोता UseCases के बीच एक मध्यस्थ के रूप में कार्य करने में ही काम करता है और यूआई, एक डेटा प्रेषक के रूप में?
क्या यह केस मॉडल रूपांतरण और इसके विपरीत उपयोग करने के लिए केवल दृश्य मॉडल करता है?
इनपुट सत्यापन तर्क किस परत पर भरोसा करते हैं? क्या यह प्रस्तुति के अंदर हो सकता है? उदाहरण के लिए, अगर हम एक साइन-अप प्रक्रिया के एक छोटे से उपयोग के मामले,
एक बार जब उपयोगकर्ता का निश्चय कर लिया है और साइन अप बटन क्लिक किया है, और डेटा प्रस्तोता के लिए भेजा लेते हैं, यह
- की तरह है प्रस्तुतकर्ता इनपुट मानों की पुष्टि करता है यदि कोई त्रुटि है वहां सूचित दृश्य
- तो मान उचित हैं, यह एक उपयोग के मामले मॉडल में बदलने का है, और अमल कुछ उपयोग के मामले, और एक बार परिणाम interactor द्वारा दिया जाता है, फिर से परिवर्तित मॉडल देखने के लिए, इसे देखने के लिए भेजें।
और दूसरा सवाल यह है कि नेविगेशन को नियंत्रित कौन करता है? व्यू या प्रस्तुतकर्ता या उपयोगकेस?
जो निर्णय लेता है कि आगे कहां जाना है?
उदाहरण के लिए - लॉगिन प्रक्रिया के उपयोग के मामले पर विचार करें, जहां उपयोगकर्ता प्रमाण-पत्र दर्ज करेगा और ठीक क्लिक करेगा।
सफल प्रवेश पर,
- उपयोगकर्ताओं को ईमेल सत्यापित नहीं है, तो सत्यापित करें स्क्रीन ईमेल करने के लिए जाना
- उपयोगकर्ताओं प्रोफ़ाइल पूरा नहीं है, तो प्रोफ़ाइल सेट अप उसके बाद ही होम स्क्रीन करने के लिए जाना
- तो उपयोगकर्ता नया है,, नए प्रस्तावों स्क्रीन दिखाई और कुछ सीधे होम स्क्रीन
तो, जो इन फैसलों जो स्क्रीन पर अगले जाने के लिए बनाने के लिए जिम्मेदार है के लिए जाना? क्या यह प्रस्तुतकर्ता है, जो तदनुसार दृश्य का निर्णय लेता है और नेविगेट करता है? या क्या यह प्रेजेंटर को सूचित करने के लिए केस केस हैंडलर जिम्मेदारी है कि अगला राज्य क्या है?
प्रश्न को बहुत लंबा बनाने के लिए खेद है, लेकिन मैं बस अपनी वर्तमान समझ को विस्तारित करना चाहता था। अग्रिम
नेविगेशन के बारे में, नमूना से जो मैं देख सकता हूं वह है 'नेविगेटर' बेसएक्टिविटी का एक हिस्सा है, जिसका अर्थ यह है कि यह दृश्य परत में है और प्रस्तुतकर्ता इसके बारे में नहीं जानता है। अब प्रश्न में मेरा दूसरा उदाहरण लें, जहां लॉगिन प्रयोक्ता के बाद कई संभावित स्क्रीनों में से किसी एक को नेविगेट किया जाना है। – Jrd
ऐसा होगा, प्रेजेंटर सिर्फ 'ऑनलॉगिनसेफ' जैसे कुछ दृश्य को सूचित करता है और फिर देखें कि कहां जाना है, यह निर्णय लेने के लिए कहां है ... 'नेविगेटर' में उपयुक्त रूटिंग विधि को कॉल करें? या प्रस्तुतकर्ता स्वयं यह 'अगर नहीं' करेगा, और 'गोटोहोम' या 'gotoEmailVerify' जैसे संबंधित दृश्य विधियों को कॉल करेगा? – Jrd
इसके अलावा, मॉड्यूल के बीच डेटा को कैसे संभाला जाता है? क्या नेविगेटर एक नई स्क्रीन (या नई सुविधा या मॉड्यूल) शुरू करने के लिए अतिरिक्त डेटा भी प्रदान करता है? उदाहरण के लिए, पिछली स्क्रीन से खरीद जानकारी धारण करके भुगतान मॉड्यूल लॉन्च हो सकता है, तो क्या नेविगेटर इसे खरीद मॉड्यूल से भुगतान मॉड्यूल में ले जाता है? – Jrd