2016-03-10 7 views
6

मैंने सामान्य रूप से स्वच्छ वास्तुकला और एंड्रॉइड विशिष्ट पर कई दस्तावेज भी पढ़े हैं।स्वच्छ आर्किटेक्चर पैटर्न एंड्रॉइड

मुझे पूरी तरह से प्रत्येक नई सुविधा के लिए एक अलग मॉड्यूल बनाने का विचार पसंद है, लेकिन मेरी चिंता यह है कि मैं अपनी डेटा परत वस्तुओं को व्यवस्थित कैसे करूं? जैसा कि मैं उन्हें फिर से प्रयोग करने योग्य बनना चाहता हूं।

क्या डेटा परत सभी फीचर मॉड्यूल के साथ एक अलग मॉड्यूल होना चाहिए या डेटा परत को मॉड्यूल के रूप में घटकों में विभाजित किया जाना चाहिए? जैसे। नेटवर्क, डेटाबेस आदि के लिए अलग मॉड्यूल?

+0

यह जांचें https://github.com/android10/Android-CleanArchitecture – hehe

+1

मैंने पहले ही उदाहरण देखा है और लेखक ने अपने ब्लॉग का पालन करने के लिए संबंधित ब्लॉग पोस्ट में उल्लेख किया है।इस उदाहरण में शीर्ष स्तर पर परतें हैं, जबकि लेखक शीर्ष स्तर – geekoraul

उत्तर

8

एंड्रॉइड के लिए एक स्वच्छ आर्किटेक्चर ढांचे के लिए इस परियोजना को देखें। https://github.com/Karumi/Rosie। हालांकि आपके प्रश्न का उत्तर देने के लिए - मैं व्यक्तिगत रूप से प्रत्येक मॉड्यूल के लिए नेटवर्क घटकों को अलग करता हूं, और उनको उपयुक्त फीचर मॉड्यूल में इंजेक्ट करता हूं जिन्हें उनकी आवश्यकता होती है। उदाहरण के लिए, कल्पना करें कि मैं किसी प्रकार का ट्विटर क्लाइंट बना रहा हूं - मेरे पास एक क्लास फीडमैनेजर हो सकता है, जो फीड लाने के लिए विधियों का खुलासा करता है, और TweetManager, जो एक नया ट्वीट बनाने के तरीकों का खुलासा करता है। हालांकि इस उदाहरण के लिए यह थोड़ा अधिक है, क्योंकि FeedManager और TweetManager बहुत छोटा हो सकता है।

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

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

+0

पर 'फीचर्स' रखने का प्रस्ताव करते हैं, मैं मानता हूं कि यह एक ओवरकिल हो सकता है लेकिन निर्भरता इंजेक्शन के साथ स्वच्छ आर्किटेक्चर को लागू करने के लिए और आरएक्सजेवा परीक्षण लागू करने में एक बहुत ही व्यवहार्य विकल्प की तरह लगता है (इकाई, उपकरण और यूआई) प्रभावी ढंग से। यह बहुत स्पष्ट है कि कोड का कौन सा हिस्सा जाता है। यदि एमवीसी, एमवीवीएम या एमवीपी आर्किटेक्चर का उपयोग किया जाता है तो यह इतना प्राप्त नहीं होता है – geekoraul

+0

@geekoraul एमवीसी के परीक्षण के लिए दर्द होने के बारे में सहमत है - लेकिन आपको एमवीवीएम या एमवीपी के साथ बहुत अधिक समस्या का परीक्षण नहीं करना चाहिए, क्योंकि अधिकांश तर्क सिर्फ पीओजेओ में है । जब तक आप ढांचे वर्ग (गतिविधि, टुकड़ा, सेवा, आदि) के बाहर अपने तर्क को स्थानांतरित करते हैं, तब यह इकाई परीक्षण के लिए तुच्छ हो जाता है। – eliasbagley

+1

आपके उत्तर के लिए धन्यवाद, कुछ और विचारों के लिए इंतजार करेंगे अन्यथा आपका स्वीकार करेंगे :) मुझे सच में नहीं पता कि कोई ऐसा विशिष्ट प्रश्न क्यों हटाएगा – geekoraul

3

पहली बात यह है कि मैं यह सही करना चाहता हूं कि आपके पैकेज आर्किटेक्चर को आपके द्वारा वर्णित मॉड्यूल आर्किटेक्चर की सुविधा पर आधारित होना चाहिए। दूसरा, सभी डेटाबेस संबंधित सामानों को समायोजित करने के लिए, बस इसके लिए एक समर्पित पॅककेज बनाएं।

यहां प्रोजेक्ट में से किसी एक का स्क्रीनशॉट है। यह आपकी मदद करेगा। Here is the screenshot of one of the project. May be it would help you.

Ref & more detail

1

कोई वास्तुकला है, साफ है या नहीं उन सब को शासन करने के लिए। चीजों को करने का कोई सही तरीका नहीं है।

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

मैं आपको लिंक का एक गुच्छा दे सकता हूं, लेकिन ऐसा लगता है कि आप पहले से ही उनमें से अधिकतर पढ़ चुके होंगे। आप पढ़ना, कोडिंग प्राप्त करने और अपने निष्कर्षों के बारे में लिखकर बाइक की सवारी कैसे सीख सकते हैं!

+0

जो बहुत स्पष्ट था लेकिन मैं यहां क्या करने की कोशिश कर रहा हूं, एक विशेष दृष्टिकोण पर चर्चा करना है। मैं उन पुनरावृत्तियों में से एक में हूं और मुझे स्वस्थ चर्चा के माध्यम से सत्यापन की आवश्यकता है। उन पुनरावृत्तियों में बहुत समय लगता है और मैं सिर्फ उत्पादन स्तर पर बदलती परियोजनाओं में कूदने के लिए तैयार नहीं हूं। – geekoraul

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