Android पर कौन से आर्किटेक्चर पैटर्न का उपयोग किया जाता है? [बन्द है]


267

मैं मोबाइल प्लेटफार्मों का एक छोटा शोध कर रहा हूं और मैं जानना चाहूंगा कि एंड्रॉइड में कौन से डिजाइन पैटर्न का उपयोग किया जाता है?

जैसे iOS में मॉडल-व्यू-कंट्रोलर को डेलिगेशन और अन्य पैटर्न के साथ बहुत व्यापक रूप से उपयोग किया जाता है।

Android विशेष रूप से किस पैटर्न और कहाँ उपयोग करता है?

संपादित करें

मैं कर्नेल, दलविक और इतने पर गहरे डिजाइन के पैटर्न का उपयोग करने के लिए नहीं कह रहा हूं, लेकिन उन पैटर्न के बारे में जो एक एप्लिकेशन डेवलपर एक एप्लिकेशन विकसित करते समय मिलेंगे।


2
एंड्रॉइड प्लेटफ़ॉर्म में लिनक्स कर्नेल शामिल है, इस सवाल का जवाब देने के लिए सॉफ्टवेयर का एक बहुत बड़ा सूट है, जो 'अब तक के सभी नाम पैटर्न के अलावा, और शायद कुछ नए भी हैं यदि आप ध्यान से देखें तो बहुत अच्छा है'
पीट किर्कम

4
@ पे, ठीक है, शायद आप सही हैं, लेकिन साथ ही मैं कर्नेल के रूप में इतना गहरा नहीं जा रहा हूं, मुझे आवेदन की सतह में दिलचस्पी है, जैसे कि UIViewControllerएमवीसी ( UIViewControllerएक नियंत्रक है और इसका मूल UIViewदृश्य है) का उपयोग करके आईओएस में लागू किया गया है UIApplicationका उपयोग करता है , प्रतिनिधि प्रतिनिधि के रूप में आवेदन प्रतिनिधि और इतने पर ...
बुर्जुआ

3
मुझे लगता है कि आपको वास्तव में नीचे से एंड्रॉइड सीखना चाहिए और आईओएस से एंड्रॉइड तक के ज्ञान को "पोर्ट" करने की कोशिश नहीं करनी चाहिए। वहाँ बहुत सारी महान पुस्तकें हैं। एप्रेस एक गुच्छा बनाता है। यदि आप एंड्रॉइड में ऐप और सेवा जीवनचक्र को समझते हैं, तो आपको एप्लिकेशन को ठीक से कैसे प्राप्त करने में सक्षम होना चाहिए।
अंधविश्वासी


यह मदद कर सकता है: stackoverflow.com/a/49694378
अली नेम

जवाबों:


323

मैंने एंड्रॉइड डेवलपमेंट करने के लिए मॉडल-व्यू-कंट्रोलर (एमवीसी) और मॉडल-व्यू-प्रस्तोता आर्किटेक्चर पैटर्न दोनों का उपयोग करने की कोशिश की । मेरे निष्कर्ष मॉडल-व्यू-कंट्रोलर ठीक काम करते हैं, लेकिन "मुद्दों" के एक जोड़े हैं। यह सब आपको एंड्रॉइड Activityक्लास के अनुभव के बारे में बताता है । यह एक नियंत्रक है, या यह एक दृश्य है?

वास्तविक Activityवर्ग एंड्रॉइड की Viewकक्षा का विस्तार नहीं करता है , लेकिन यह, हालांकि, उपयोगकर्ता को एक विंडो प्रदर्शित करने का काम संभालता है और उस विंडो की घटनाओं को भी संभालता है (ऑनक्रिएट, ऑनपॉज़, आदि)।

इसका मतलब है, कि जब आप MVC पैटर्न का उपयोग कर रहे हैं, तो आपका नियंत्रक वास्तव में एक छद्म दृश्य-नियंत्रक होगा। चूंकि यह उपयोगकर्ता को एक विंडो प्रदर्शित कर रहा है, अतिरिक्त दृश्य घटकों के साथ आपने इसे setContentView के साथ जोड़ा है, और कम से कम विभिन्न गतिविधि जीवन चक्र की घटनाओं के लिए घटनाओं को भी संभाल रहा है।

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

इस वजह से, मुझे व्यक्तिगत रूप से लगता है कि मॉडल-व्यू-प्रस्तोता पैटर्न एंड्रॉइड विकास के लिए एकदम सही है। चूंकि इस पैटर्न में दृश्य की भूमिका है:

  • प्रवेश बिंदु के रूप में सेवा करना
  • घटकों का प्रतिपादन
  • प्रस्तुतकर्ता को उपयोगकर्ता ईवेंट रूटिंग

यह आपको अपना मॉडल लागू करने की अनुमति देता है:

दृश्य - इसमें आपके UI घटक शामिल हैं, और उनके लिए ईवेंट को संभालता है।

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

मॉडल - यह मूल रूप से आपका पूर्ण डोमेन मॉडल होना चाहिए। उम्मीद है कि यह आपके डोमेन मॉडल को और अधिक "तंग" बनाने में मदद करेगा, क्योंकि आपको ऊपर बताए गए मामलों से निपटने के लिए विशेष तरीकों की आवश्यकता नहीं होगी।

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

कोशिश करके देखो। मैं व्यक्तिगत रूप से इसे एंड्रॉइड विकास के लिए एक महान फिट मानता हूं।


14
बहुत बढ़िया जवाब! हालांकि मेरे पास सवाल हैं: 1. गतिविधि = देखें, क्या मुझे यह अधिकार मिला है? 2. क्या आप प्रस्तुतकर्ता को अपने स्वयं के सार्वजनिक वर्ग के रूप में, या गतिविधि के एक आंतरिक वर्ग के रूप में लागू करेंगे? या एक टुकड़ा (भी आंतरिक वर्ग)? 3. क्या आपका मतलब है कि गतिविधि (दृश्य) में वास्तविक मॉडल कक्षाओं के बजाय स्थानांतरण कक्षाएं इस्तेमाल की जाएंगी?
मणिमाल

14
1. हां, मैं उन्हें एमवीपी पैटर्न के भीतर विचारों के रूप में उपयोग करता हूं। 2. व्यक्तिगत रूप से, मैं उन्हें व्यक्तिगत सार्वजनिक वर्गों में विभाजित करता हूं, लेकिन यह स्वाद का मामला है जो मुझे लगता है :) 3. मैंने इसे काफी खराब तरीके से समझाया, वाक्य "आगे की कक्षाओं की जरूरत है" भ्रामक है। मेरा मतलब क्या है, प्रस्तुतकर्ता दृश्य और मॉडल के बीच बैठता है, यह मॉडल को पढ़ता है और फिर दृश्य को अपडेट करता है। मैं अपने उत्तर को थोड़ा और स्पष्ट होने के लिए अद्यतन करूंगा :)
जस्टडान्युल

समय निकालने के लिए धन्यवाद, मैं इसे अभी प्राप्त करता हूं :)
manmal

11
मुझे वास्तव में एंड्रॉइड डेवलपमेंट बहुत पसंद है क्योंकि यह अत्यधिक डिकूप्ड है। मैं MVC का उपयोग कैसे करता हूं: उपयोगकर्ता IO के लिए विशुद्ध रूप से गतिविधियों का उपयोग करें, और अपने सभी प्रसंस्करण के लिए एक स्थानीय सेवा का उपयोग करें। जब सेवा कुछ दिखाना चाहती है - तो इसे अपनी गतिविधियों में प्रसारित करें! मैं वास्तव में इसे नफरत करता हूं जब अन्य देवों की गतिविधियों में बहुत अधिक प्रसंस्करण होता है।
कोई व्यक्ति

8
@SomeoneSomewhere में ऐसा वर्ग क्यों नहीं है जो अलग थ्रेड / AsyncTasks में इस सामान को संभालता है, एक सेवा क्यों?
लड़का

87

अपडेट नवंबर 2018

एंड्रॉइड में एमवीसी और एमवीपी के बारे में कई वर्षों तक काम करने और ब्लॉगिंग करने के बाद (नीचे दिए गए उत्तर के शरीर को देखें), मैंने अपने ज्ञान और समझ को अधिक व्यापक और आसानी से पचने योग्य रूप में पकड़ने का फैसला किया।

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

यह उत्तर नवंबर 2016 तक प्रासंगिक बने रहने के लिए अपडेट किया गया था


ऐसा लगता है कि आप डिजाइन पैटर्न के बजाय वास्तुशिल्प पैटर्न की तलाश कर रहे हैं ।

डिज़ाइन पैटर्न का लक्ष्य एक सामान्य "ट्रिक" का वर्णन करना है जो प्रोग्रामर आवर्ती सॉफ़्टवेयर कार्यों के एक विशेष सेट को संभालने के लिए लागू कर सकता है। उदाहरण के लिए: OOP में, जब कुछ घटनाओं के बारे में अन्य वस्तुओं के एक सेट को सूचित करने के लिए एक वस्तु की आवश्यकता होती है, तो पर्यवेक्षक डिजाइन पैटर्न को नियोजित किया जा सकता है।

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

दूसरी ओर, वास्तुशिल्प पैटर्न , विशेष सॉफ़्टवेयर कार्यों को संबोधित नहीं करते हैं - उनका उद्देश्य सॉफ़्टवेयर घटक के प्रश्न में सॉफ़्टवेयर घटक के उपयोग के आधार पर टेम्पलेट प्रदान करना है ।

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

चूँकि आपने अपने प्रश्न में MVC का उल्लेख किया है, मुझे लगता है कि वास्तुशिल्प पैटर्न वही है जो आप खोज रहे हैं।

यहां छवि विवरण दर्ज करें


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

लेकिन आज स्थिति अलग है - Google ने हाल ही में डेटा बाइंडिंग लाइब्रेरी जारी की , जो एंड्रॉइड स्टूडियो के साथ पूरी तरह से एकीकृत है, और, यहां तक ​​कि एंड्रॉइड एप्लिकेशन के लिए आर्किटेक्चर ब्लूप्रिंट का एक सेट रोल आउट किया गया है ।

दो साल पहले एंड्रॉइड पर एमवीसी या एमवीपी के बारे में जानकारी प्राप्त करना बहुत कठिन था। आज, एमवीसी, एमवीपी और एमवीवीएम एंड्रॉइड समुदाय में "चर्चा शब्द" बन गए हैं, और हम अनगिनत विशेषज्ञों से घिरे हुए हैं जो लगातार हमें समझाने की कोशिश करते हैं कि एमवीवी एमवीवाई से बेहतर है। मेरी राय में, इस बात पर चर्चा करना कि क्या MVx MVy से बेहतर है, पूरी तरह से व्यर्थ है क्योंकि शब्द स्वयं बहुत अस्पष्ट हैं - बस इस प्रश्न के उत्तर को देखें , और आपको पता चलेगा कि विभिन्न लोग इन संक्षिप्तीकरणों को पूरी तरह से अलग निर्माणों के साथ जोड़ सकते हैं।

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

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


अब, हालांकि हमारे पास आज कुछ प्रकार के आधिकारिक दिशानिर्देश और उपकरण हैं, मैं, व्यक्तिगत रूप से, यह नहीं सोचता कि ये दिशानिर्देश और उपकरण उपलब्ध सर्वोत्तम विकल्प हैं (और वे निश्चित रूप से केवल एक ही नहीं हैं)। अपने अनुप्रयोगों में मैं एमवीसी वास्तुकला के अपने स्वयं के कार्यान्वयन का उपयोग करता हूं। यह सरल, स्वच्छ, पठनीय और परीक्षण योग्य है, और किसी भी अतिरिक्त पुस्तकालयों की आवश्यकता नहीं है।

यह एमवीसी केवल दूसरों से अलग नहीं है - यह एक सिद्धांत पर आधारित है कि एंड्रॉइड में गतिविधियां यूआई एलिमेंट्स नहीं हैं , जिसका कोड संगठन पर जबरदस्त प्रभाव है।

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


2
ऐसे संसाधनों को प्रदान करने के लिए अच्छी तरह से किया जाता है! धन्यवाद!
अलेक्जेंडर

1
बहुत उपयोगी लिंक!
सेमीफोर

मुझे आपका वीडियो कोर्स पसंद है! धन्यवाद
विक्टर Apoyan

79

यहां छवि विवरण दर्ज करें

जब मैं इस पोस्ट पर पहुँचता हूँ तो यह वास्तव में मुझे उदाहरणों के साथ पैटर्न समझने में मदद करता है इसलिए मैंने डिज़ाइन पैटर्न और एंड्रॉइड फ्रेमवर्क में उनके उदाहरण को स्पष्ट रूप से देखने के लिए नीचे दी गई तालिका बनाई है

मुझे उम्मीद है कि आप इसे मददगार पाएंगे।


3
कृपया अपनी पोस्ट को संपादित करें और स्क्रीनशॉट के बजाय वास्तविक सामग्री को पाठ के रूप में दिखाएं। अन्य आपकी छवियों से कॉपी और पेस्ट नहीं कर सकते हैं या आपको अपने टाइपो को ठीक करने में मदद नहीं कर सकते हैं। विवरण के लिए यहां देखें। धन्यवाद।
पंग


1
इस उत्तर के लिए धन्यवाद, मैं वास्तुशिल्प और डिजाइन पैटर्न के बीच बहुत उलझन में था, मेरे पास अभी भी एक सवाल है कि क्या है ओओ-डिजाइन और डेवलपमेंट?! @ अभिनेता वाल्टर
भट्ट जोशी

मैं इस जवाब को वोट देता हूं, क्योंकि @Burjua के प्रश्न में आर्किटेक्चर के संदर्भ में डिजाइन पैटर्न का उल्लेख है, लेकिन वे समान नहीं हैं। मैं इस प्रश्न को मूल प्रश्न
Xaren

इवेंट बस प्रकाशक और ग्राहक डिजाइन पैटर्न का उपयोग करती है
देवराठ

48

एंड्रॉइड फ्रेमवर्क में उपयोग किए जाने वाले विभिन्न पैटर्न हैं:

  • ब्रॉडकास्ट रिसीवर ऑब्जर्वर पैटर्न का उपयोग करता है
  • रेमोटर सेवा आह्वान प्रॉक्सी पैटर्न का उपयोग करता है
  • देखें और देखें समूह समग्र पैटर्न का उपयोग करता है
  • मीडिया फ्रेमवर्क फसेड पैटर्न का उपयोग करता है

5
क्या आप कृपया लिंक (संदर्भ)
शनरिषन

कृपया संदर्भ साझा करें ताकि मुझे इसके बारे में और जानकारी मिल सके। साभार
सैयद हमजा हसन

27

यहाँ Android के लिए सामान्य डिजाइन पैटर्न पर एक महान लेख है :

रचनात्मक पैटर्न:

  • बिल्डर (उदाहरण के लिए AlertDialog.Builder )
  • निर्भरता इंजेक्शन (जैसे डगर 2 )
  • एकाकी वस्तु

संरचनात्मक पैटर्न:

  • एडाप्टर (उदाहरण के लिए RecyclerView.Adcape )
  • मुखौटा (जैसे रेट्रोफ़िट )

स्वभावजन्य तरीका:

  • कमान (जैसे EventBus )
  • प्रेक्षक (जैसे RxAndroid )
  • मॉडल दृश्य नियंत्रक
  • मॉडल दृश्य ViewModel ( ऊपर MVC पैटर्न के समान )

1
लेख के मुख्य बिंदु अच्छे होंगे।
मैक्सिम जी

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

इवेंट बस प्रकाशक और ग्राहक डिजाइन पैटर्न का उपयोग करती है
देवराठ

16

निम्नलिखित एंड्रॉइड कक्षाएं डिज़ाइन पैटर्न का उपयोग करती हैं

1) व्यू होल्डर सिंगलटन डिजाइन पैटर्न का उपयोग करता है

2) इरादे फैक्टरी डिजाइन पैटर्न का उपयोग करता है

3) एडेप्टर एडेप्टर डिजाइन पैटर्न का उपयोग करता है

4) ब्रॉडकास्टर रिसीवर ऑब्जर्वर डिजाइन पैटर्न का उपयोग करता है

5) देखें समग्र डिजाइन पैटर्न का उपयोग करता है

6) मीडिया फ्रेमवर्क फॉकडे डिजाइन पैटर्न का उपयोग करता है


11

में सूचनाएं मामला है, NotificationCompat.Builderका उपयोग करता है बिल्डर पैटर्न

पसंद,

mBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_stat_notification)
                    .setContentTitle(getString(R.string.notification))
                    .setContentText(getString(R.string.ping))
                    .setDefaults(Notification.DEFAULT_ALL);

3
यह वास्तव में बिल्डर पैटर्न है।
पियोवेज़न

@Piovezan मैं गलत हूं। मुझे सही करने के लिए धन्यवाद। मैंने सोचा कि यह डेकोरेटर पैटर्न का एक सरल संस्करण है।
जेफ टी।

6

Android ViewHolder डिज़ाइन पैटर्न का भी उपयोग करता है।

इसका उपयोग स्क्रॉल करते समय एक सूची दृश्य के प्रदर्शन को बेहतर बनाने के लिए किया जाता है।

व्यूहॉल्डर डिज़ाइन पैटर्न आपको मूल्यवान प्रोसेसर चक्रों को बचाने के लिए प्रत्येक सूची आइटम दृश्य को देखने की आवश्यकता के बिना उपयोग करने में सक्षम बनाता है। विशेष रूप से, यह ListView स्क्रॉलिंग के दौरान findViewById () के लगातार कॉल से बचता है, और यह इसे सुचारू बना देगा।


5

ये सभी पैटर्न, एमवीसी, एमवीवीएम , एमवीपी और प्रेजेंटेशन मॉडल , एंड्रॉइड ऐप पर लागू किए जा सकते हैं, लेकिन तीसरे पक्ष के ढांचे के बिना, अच्छी तरह से संगठित संरचना और स्वच्छ कोड प्राप्त करना आसान नहीं है।

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

इस समय, तीसरे पक्ष के ढांचे के बिना, आपके पास आमतौर पर बहुत सारे कोड होते हैं (जैसे एडएक्सएक्सएक्स लिस्टनर (), findViewById (), आदि), जो किसी भी व्यावसायिक मूल्य को नहीं जोड़ता है। क्या अधिक है, आपको सामान्य JUnit परीक्षणों के बजाय एंड्रॉइड यूनिट परीक्षण चलाना होगा, जो चलाने के लिए उम्र लेते हैं और यूनिट परीक्षणों को कुछ अव्यवहारिक बनाते हैं।

इन कारणों से, कुछ साल पहले हमने एक ओपन सोर्स प्रोजेक्ट शुरू किया, रोबोबाइंडिंग - एंड्रॉइड प्लेटफॉर्म के लिए डेटा-बाइंडिंग प्रेजेंटेशन मॉडल फ्रेमवर्क। रोबोबाइंडिंग आपको यूआई कोड लिखने में मदद करता है जो पढ़ने, परीक्षण और बनाए रखने में आसान है। रोबोइंडिंग अनावश्यक लिंक की आवश्यकता को addXXListener या तो हटाता है , और UI तर्क को प्रस्तुति मॉडल में स्थानांतरित करता है, जो कि POJO है और सामान्य JUnit परीक्षणों के माध्यम से परीक्षण किया जा सकता है । रोबोबाइंडिंग स्वयं अपनी गुणवत्ता सुनिश्चित करने के लिए 300 से अधिक JUnit परीक्षणों के साथ आता है।


2

मैं एक डिज़ाइन पैटर्न जोड़ना चाहूंगा जिसे Android फ्रेमवर्क में लागू किया गया है। यह Asynctask कार्यान्वयन में उपयोग किया गया हाफ सिंक आधा Async पैटर्न है। मेरी चर्चा देखें

https://docs.google.com/document/d/1_zihWXAwgTAdJc013-bOLUHPMrjeUBZnDuPkzMxEEj0/edit?usp=sharing


1

एंड्रॉइड में "वर्क कतार प्रोसेसर" पैटर्न का उपयोग आमतौर पर एप्लिकेशन के मुख्य थ्रेड से कार्यों को लोड करने के लिए किया जाता है।

उदाहरण: इंटेन्स सर्विस क्लास का डिज़ाइन।

IntentService इंटेंट्स प्राप्त करता है, एक श्रमिक थ्रेड लॉन्च करता है, और उपयुक्त के रूप में सेवा को रोकता है। सभी अनुरोधों को एक ही वर्कर थ्रेड पर संभाला जाता है।


0

बाइंडर डेथ रिसिपिएंट नोटिफिकेशन के लिए "ऑब्जर्वर पैटर्न" का उपयोग करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.