कृपया उपयुक्त उदाहरण के साथ इंटरफ़ेस प्रदायक (गुवा में) के उपयोग की व्याख्या करें।Google गुवा प्रदायक उदाहरण
उत्तर
Supplier
इंटरफ़ेस बस एक नो-आर्ग समारोह है कि एक मान देता है की एक अमूर्त यह एक वस्तु के कुछ उदाहरण या उदाहरणों होने का एक साधन है है ...। चूंकि यह बहुत सामान्य है, इसे कई चीजों के रूप में उपयोग किया जा सकता है। जेरेड ने समझाया कि Multimaps
कारखानों ने इसे किसी प्रकार के मूल्यों के Collection
का नया उदाहरण बनाने के लिए कारखाने के रूप में उपयोग किया है।
इंटरफ़ेस की सादगी को देखते हुए, यह किसी अन्य Supplier
में लपेटकर Supplier
के व्यवहार की कुछ बहुत ही शक्तिशाली सजावट की अनुमति देता है जो किसी भी तरह से इसके व्यवहार को बदल देता है। यादें इसका एक उदाहरण है। मैंने Suppliers.memoizeWithExpiration
विधि को स्वयं बनाने के लिए एक आसान तरीका के रूप में उपयोग किया है, इसलिए कुछ डेटा केवल एक समय से एक सर्वर से पढ़ा जाएगा।
मैं भी गिसिस पर एक नज़र डालने की सिफारिश करता हूं और Provider
इंटरफ़ेस का उपयोग कैसे किया जाता है। Provider
बिल्कुल Supplier
के बराबर है और यह गुइस कैसे काम करता है इसके लिए केंद्रीय है।
Provider
उपयोगकर्ताओं को किसी दिए गए वर्ग की नई वस्तुओं को बनाने का एक कस्टम तरीका परिभाषित करने की अनुमति देता है। उपयोगकर्ताget()
विधि लिख सकते हैं जो किसी ऑब्जेक्ट को बनाने के लिए जो भी कोड आवश्यक है, निष्पादित कर सकते हैं, इसलिए वे ऑब्जेक्ट बनाने के लिए अकेले गिइस का उपयोग करने वाले रचनाकारों तक सीमित नहीं हैं। यहां, वे ऑब्जेक्ट के नए उदाहरण के लिए एक कस्टम फैक्टरी परिभाषित करने के लिए इसका उपयोग कर रहे हैं।- गुइस किसी भी निर्भरता के
Provider
के इंजेक्शन की अनुमति देता है। यह हर बारget()
कहलाता है या यहProvider
बाध्यकारी को दर्शाता है कि यह कैसे एक उदाहरण या किसी भी चीज़ को वापस कर सकता है, यह एक नया उदाहरण लौटा सकता है। यह निर्भरताओं के "आलसी तत्काल" के लिए भी अनुमति देता है ...Provider
एक कक्षा एक ऑब्जेक्ट बनाने के माध्यम से वास्तव में समय से पहले ऑब्जेक्ट बनाने की आवश्यकता के बिना देता है। ऑब्जेक्ट का एक उदाहरण तब तक बनाने की आवश्यकता नहीं है जब तक, और यदि,get()
कहा जाता है। - जैसा ऊपर बताया गया है,
Provider
एस गुइस में स्कोपिंग का आधार है। यदि आप Scope इंटरफ़ेस पर एक नज़र डालें, तो आप देखेंगे कि इसकी एकल विधिProvider<T> scope(Key<T> key, Provider<T> unscoped)
Provider
एस के संदर्भ में परिभाषित है। इस विधि को ऐसा लगता है जो किसी ऑब्जेक्ट (Provider<T> unscoped
) का एक नया उदाहरण बनाता है और उस पर आधारितProvider<T>
देता है जो उस क्षेत्र के आधार पर लागू होता है जो किसी भी नीति को लागू करता है, संभावित रूप से ऑब्जेक्ट के कुछ कैश किए गए उदाहरण को एक नया बनाने के बजाय। डिफ़ॉल्टNO_SCOPE
गुंजाइश बसunscoped
प्रदाता के साथ गुजरती है, जिसका अर्थ है कि हर बार एक नया उदाहरण बनाया जाएगा।SINGLETON
स्कोप पहली कॉल के परिणाम कोunscoped.get()
पर कैश करता है और उसके बाद उस एकल उदाहरण को लौटाता है, यह सुनिश्चित करता है कि सिंगलटन-स्कोप्ड ऑब्जेक्ट पर निर्भर करता है कि सब कुछ उस ऑब्जेक्ट का संदर्भ प्राप्त करता है। ध्यान दें किSINGLETON
स्कोप कीscope
विधि द्वारा लौटाई गई आवश्यक रूप सेSupplier
Suppliers.memoize
(हालांकि यह थोड़ा अधिक जटिल है) द्वारा लौटा दी गई है।
यह एक अप्रत्यक्ष वस्तु प्रदान करने का एक तरीका है। आप प्रत्येक बार Supplier.get() is
नामक एक और वस्तु प्रदान करना चाह सकते हैं।
उदाहरण के लिए, मेरे पास SmtpMailSender
नामक सिंगलटन क्लास है, जो smtp सर्वर के लिए होस्टनाम लेता है। हालांकि, होस्टनाम रनटाइम पर बदल सकता है, इसलिए String hostname
लेने के बजाय, यह Supplier<String> hostname
लेता है।
प्रदायक का एक उदाहरण उपयोग:
Suppliers वर्ग देखें और मुझे लगता है कि तरीकों वहाँ किसी भी तरह अपने प्रश्न का उत्तर होगा।
प्रदायक का एक और उदाहरण उपयोग:
http://javawayoflife.blogspot.com/2010/06/unit-test-and-new-date.html
मुख्य कारण हम अमरूद में प्रदायक शामिल Multimaps तरीकों कि मनमाने ढंग से Multimaps उत्पन्न करते हैं, इस तरह के
public static <K,V> Multimap<K,V> newMultimap(Map<K,Collection<V>> map,
Supplier<? extends Collection<V>> factory)
प्रदायक बनाता है के रूप में समर्थन करने के लिए था एक संग्रह जो किसी दिए गए कुंजी के लिए सभी मान रखता है। मल्टीमैप प्रदायक का उपयोग करता है जब भी आप एक कुंजी-वैल्यू जोड़ी को उस कुंजी के साथ संग्रहीत करते हैं जो पहले से ही मल्टीमैप में नहीं है।
कक्षा का एक और बड़ा उपयोग decoupling है - यदि कोई घटक केवल मूल्य प्राप्त करने के लिए किसी अन्य का उपयोग करता है, तो ठोस कार्यान्वयन पर निर्भर नहीं है, लेकिन इस इंटरफ़ेस पर निर्भर करता है। ? http://www.slideshare.net/tfnico/google-guava
- 1. Google गुवा सेवा ट्यूटोरियल या उदाहरण?
- 2. Google डार्ट फॉर्म उदाहरण उदाहरण
- 3. Google गुवा/कार्यात्मक संग्रह-प्रकार कार्यान्वयन प्रदान करना
- 4. Google गुवा का कैशलोडर लोडअल() बनाम रीलोड() सेमेन्टिक्स
- 5. गुवा मल्टीमैप
- 6. जेलीबीन पर वाईफाई-डायरेक्ट, डब्ल्यूपीए प्रदायक ने
- 7. Google गुवा (जावा) में, Iterables.getFirst() और getLast() असंगत क्यों हैं?
- 8. Google संग्रह (गुवा पुस्तकालय): अपरिवर्तनीय सेट/सूची/मानचित्र और फ़िल्टरिंग
- 9. उदाहरण स्ट्रिंग Google Apps स्क्रिप्ट
- 10. एक गुवा कैश
- 11. गुवा मल्टीसेट बनाम मानचित्र?
- 12. फ़िल्टरिंग गुवा मल्टीमैप्स
- 13. क्या सी # के लिए गुवा है?
- 14. एक गुवा बायमैप को छंटाई
- 15. गुवा लोडिंग कैश - बैकिंग स्टोर
- 16. गुवा में मानचित्र में मानचित्र
- 17. गुवा मैपमेकर()। कमजोरकेस()। मेकमैप() बनाम वीक हैशैप
- 18. Google ऐप इंजन स्थिर फ़ाइल हैंडलर उदाहरण
- 19. प्रदर्शन के अनुसार, गुवा पुस्तकालय कितना अच्छा है?
- 20. जीडब्ल्यूटी और गुवा के साथ समस्या
- 21. मैसेजिंग सेवा जो गुवा के इवेंटबस
- 22. गुवा संग्रह के साथ थ्रेड-सुरक्षित हैशसेट
- 23. Google Guava
- 24. स्केल के लिए उदाहरण उदाहरण?
- 25. फ़ाइलों को क्यों हटाया जाता है .deleteDirectoryContents() गुवा में बहिष्कृत?
- 26. माउस की ओर ज़ूम करें (उदाहरण के लिए Google मानचित्र)
- 27. Google ऐप इंजन के लिए सरल उपयोगकर्ता प्रबंधन उदाहरण?
- 28. Google मानचित्र उनके उदाहरण के लिए ड्राइविंग दिशा स्रोत कोड?
- 29. उदाहरण Google ऐप इंजन (पायथन, डीजेगो) वेबसाइट ओपन सोर्स
- 30. एक पृष्ठ पर Google मानचित्र के कई उदाहरण
आप आपूर्तिकर्ताओं में mnemonize के बारे में पता है ताकि के लिए एक नमूना भी दे कृपया कार्य करें:
वैसे भी, यहाँ कुछ उदाहरण कोड है। – Emil
@Emil: 'memoize' का उपयोग होता है उदा। [यहां] (http://stackoverflow.com/questions/3636244/thread-safe-cache-of-one-object-in-java/3636791#3636791) – maaartinus