android - डैगर और बटरकिनीफ एंड्रॉइड के बीच अंतर




dagger butterknife (4)

@ जेकवार्टन ने इसे आंशिक रूप से टिप्पणी में जवाब दिया:

टीएल; डीआर: वे एक दूसरे के पूरक हैं। विचारों को इंजेक्शन देने के लिए बटरनाइफ का प्रयोग करें, बाकी के लिए डैगर।

यदि आप विचारों को आज़माने और इंजेक्ट करने के लिए डैगर का उपयोग करते हैं तो आपको बहुत बुरा समय होगा :) मक्खन चाकू को इंजेक्शन के बजाय बाध्यकारी विचारों के साधन के रूप में सोचने का प्रयास करें। मैंने इसे केवल इंजेक्शन कहा क्योंकि सभी RoboGuice रूपांतरण डैगर के साथ "इंजेक्शन देखें" की कमी के बारे में शिकायत कर रहे थे। यह बिल्कुल इंजेक्शन नहीं है। उत्तर उल्लेखों की तरह, यह बॉयलरप्लेट को कम करने का एक तरीका है। हुड के तहत यह सिर्फ आपको देखेगा ViewById जैसा आप करेंगे!

क्या कोई डैगर और बटरknife के बीच का अंतर बता सकता है? मुझे पता है कि बटरनाइफ एक दृश्य इंजेक्शन लाइब्रेरी है और डैगर एक निर्भरता इंजेक्शन लाइब्रेरी है। लेकिन ऑनलाइन प्रलेखन मेरे लिए थोड़ा ओवरहेड लगता है। Butterknife दस्तावेज़ीकरण के अनुसार आप गैर-गतिविधि इंजेक्शन भी कर सकते हैं, जो डैगर करता है? या मैंने कुछ गलत समझा?

http://square.github.io/dagger/

http://jakewharton.github.io/butterknife/


ButterKnife को क्लिक श्रोताओं को पंजीकृत करने के लिए सरल बनाने के लिए बनाया गया था, और findViewById() कॉल द्वारा प्रदान किए गए बॉयलरप्लेट को कम करने के लिए बनाया गया था।

डैगर और डैगर 2 सामान्य उद्देश्य निर्भरता इंजेक्शन सिस्टम हैं।

गुइस और एमवीवीएम पर पाठ को अनदेखा करें, और Dependency Injection और The Android Way पढ़ें। यह बहुत अधिक जवाब देता है कि डैगर का क्या मतलब है और सरल बनाना है।

https://spring.io/blog/2011/08/26/clean-code-in-android-applications


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

लिंक: http://jakewharton.github.io/butterknife/

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

लिंक:

https://github.com/johncarl81/parceler

https://github.com/ribot/easy-adapter


ButterKnife केवल विचारों को इंजेक्ट करने के लिए लक्षित है। गैर-गतिविधि इंजेक्शन का अर्थ यह है कि आप अपने स्वयं के व्यू रूट को दृश्यों को इंजेक्ट करने के लिए प्रदान कर सकते हैं (जैसे मैन्युअल रूप से फुले हुए विचार आदि)। डैगर थोड़ा और जटिल है। यह तब तक इंजेक्ट कर सकता है जब तक आप Module -क्लास निर्दिष्ट करते हैं जो उन निर्भरताओं को संतुष्ट करता है (वैकल्पिक रूप से आप कन्स्ट्रक्टर इंजेक्शन का उपयोग कर सकते हैं)।

एक निचली पंक्ति के रूप में - मैं कहूंगा कि बटरकिनी आपको उन बॉयलरप्लेट कोड से बचने में मदद करता है जो देखने के लिए (उर्फ (TextView)findViewById(R.id.some_text_view); कुछ भी नहीं। हुड के नीचे यह अभी भी उबाऊ कोड करता है। यह वास्तव में एक इंजेक्शन नहीं है ..

यह भी उल्लेखनीय है कि जेक व्हार्टन उन शांत libs दोनों के लिए डेवलपर्स में से एक है :)

यहां कुछ उपयोगी लिंक दिए गए हैं:

गिटहब पर डैगर नमूना परियोजना

Devoxx (जेक व्हार्टन) पर डैगर प्रस्तुति

डैगर देवताओं के साथ डैगर hangout

बहुत उपयोगी ButterKnife लिंक नहीं है। हालांकि यह वास्तव में सरल और सीधे आगे है, इसलिए उम्मीद है कि आपको किसी की आवश्यकता नहीं है





butterknife