2011-06-05 21 views
42

मैं एक एंड्रॉइड प्रोजेक्ट पर काम कर रहा हूं और मैं एंड्रॉइड एप्लिकेशन बनाने के लिए एक अच्छी वास्तुकला के बारे में कोई सिफारिश जानना चाहता हूं।Roboguice के साथ निर्भरता इंजेक्शन का उपयोग?

मैं रोबोगुइस का उपयोग करके निर्भरता इंजेक्शन का उपयोग करना चाहता हूं और मैं एमवीवीएम पैटर्न या एमवीसी पैटर्न (Android MVVM Design Pattern Examples) के बारे में पढ़ रहा हूं।

यह भी मुझे पता है कि रोबोगुइस के पास एक बहुत अच्छा संदर्भ-आधारित घटना की बढ़ती और हैंडलिंग सुविधा है जो कोड को डीकॉप्लेड के रूप में बहुत टेस्टेबल हो सकता है।

एक कामकाजी डिजाइन पैटर्न पर कोई सिफारिशें? एक टेस्टेबल और स्केलेबल आर्किटेक्चर आपने काम किया है या विकसित किया है?

+2

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

+0

यदि आप यहां ["एंड्रॉइड डिज़ाइन-पैटर्न आर्किटेक्चर"] (http://stackoverflow.com/search?q=android+design-patterns+architecture) के लिए खोज करते हैं तो आपको कुछ मार्गदर्शन मिल सकता है। – DOK

+0

यदि आप गोफ बुक देखते हैं तो आप देखेंगे कि पैटर्न विभिन्न स्थानों पर उपयोग किए जाएंगे। आपकी गतिविधियां एक नियंत्रक पैटर्न (चाहिए) हो सकती हैं, और सामग्री प्रदाता डेटा एक्सेस पैटर्न होगा। आपको अन्य जगहें मिलेंगी जहां पैटर्न उपयोगी हो सकते हैं, लेकिन जैसा कि बताया गया है, यह स्थिति के आधार पर स्थिति पर निर्भर करता है। –

उत्तर

18

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

यह जब यूआई समाधान पर काम कर रहे एक महान संसाधन है: http://www.androidpatterns.com/

डि के लिए विशेष रूप से

: वहाँ एक Spring framework for Android है, मैं इसके साथ एक नाटक किया है और यह काफी होनहार लग रहा है। आपने रोबोगुइस का पहले से ही इसका दूसरा विकल्प बताया है। हालांकि, प्रदर्शन और लाइब्रेरी ओवरहेड से बचने के लिए, मुझे अभी भी एक आसान प्रतिबिंब-आधारित वर्ग लिखना सबसे आसान तरीका है जो मेरे कोड के भीतर निर्भरताओं को पंजीकृत करता है और इंजेक्ट करता है। this approach के समान, सिवाय इसके कि मैं आमतौर पर इंजेक्शन कोड को एक अलग सिंगलटन में ले जाता हूं और इसे वहां से संदर्भित करता हूं।

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

+5

का परीक्षण करने के लिए बहुत मुश्किल था! स्प्रिंग एंड्रॉइड बहुत अच्छा है, लेकिन वर्तमान में यह केवल एकीकरण libs प्रदान करता है, AFAIK में कोई DI नहीं है। RoboGuice भी अच्छा है, लेकिन प्रतिबिंब एपीआई कुछ उपकरणों पर प्रदर्शन लागत के साथ आता है। [AndroidAnnotations] (http://github.com/excilys/androidannotations) संकलन समय पर, वही सामान करता है। उस पर आपकी प्रतिक्रिया सुनना अच्छा लगेगा :)। –

+1

AndroidAnnotations बहुत दिलचस्प लग रहा है। अगली बार जब मैं एंड्रॉइड ऐप पर काम कर रहा हूं, तो मैंने इसे बुकमार्क किया है, एक बार मुझे कोशिश करने का मौका मिलने पर कुछ फीडबैक छोड़ देंगे। – seanhodges

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