2016-01-21 8 views
7

जावा 8 में, यह इंटरफ़ेस या अमूर्त वर्ग के बजाय CompletableFuture लौटने Future लौटने एपीआई को परिभाषित करने के लिए बेहतर है? को ध्यान में रखते it is ugly converting Future to CompletableFuture और तथ्य यह है कि फोन करने वाले CompletableFuture कार्यात्मक शैली सीधे का उपयोग कर के और अधिक लचीलापन दे देंगे, क्या कर सकता है एक API बस वापस जाने के लिए Future के लिए एक अच्छा कारण हो सकता है?क्या एपीआई को परिभाषित करते समय मैं CompletableFuture या भविष्य वापस कर सकता हूं?

+0

मैं सिर्फ इस प्रश्न पूछा 2 मिनट पहले और पहले से ही 1 पास वोट? प्रोग्रामिंग/डिज़ाइन विकल्पों के लिए वास्तविक उपयोग के मामलों के बारे में पूछने में क्या गलत है? – derrdji

+0

मुझे लगता है कि यह थोड़ा सा व्यापक होगा। हो सकता है कि उपयोग का मामला क्या है? –

+0

उपयोग के मामले मैं उस फ़ाइल की प्रोसेसिंग करता है एक async एपीआई को डिजाइन कर रहा हूँ, मेरे अतीत के ज्ञान मुझसे कहता है भविष्य वापस जाने के लिए करने के लिए है, लेकिन अन्य तो सवाल मैं जुड़ा हुआ से सीखने के बाद, मैं Java8 की तरह महसूस मुझे CompletableFuture वापस जाने के लिए कह रहा है। मुझे यकीन नहीं है, और मदद की ज़रूरत है। – derrdji

उत्तर

3

मेरे 2 सीटीएस:

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

तो आपको संभवत: भविष्य में एक पूर्ण भविष्य के अलावा कुछ और वापस करना चाहते हैं (हहा) की संभावना का आकलन करना चाहिए और तदनुसार निर्णय लेना चाहिए।

1

सोचा मैं यह करने के लिए वापस आने के लिए और अपने अंतिम निर्णय पर कुछ अपडेट प्रदान करेगा:

मेरे अपने कोड/डिजाइन के लिए, मैं, वापसी प्रकार के रूप में CompletableFuture उपयोग करने के साथ चला गया क्योंकि

  • यह है एक protected abstract एक आंतरिक भाग की विधि जिसे मैं एक्स्टेंसिबल बनाना चाहता हूं;
  • मुझे बाइंडिंग को परिभाषित करने के लिए एक इंटरफ़ेस की आवश्यकता नहीं है;
  • इस रिटर्न प्रकार का मुख्य उद्देश्य एक भविष्य है (एसिंक आईओ के लिए), मुझे व्यक्तिगत रूप से लगता है कि CompletableFuture द्वारा प्रदान की गई कार्यात्मक स्टाइल एपीआई भविष्य के देवताओं को कार्यात्मक शैली का उपयोग करने का एक अतिरिक्त लाभ/अनुस्मारक/प्रोत्साहन है।
इसी के साथ

कहा जा रहा है, मैं निश्चित रूप से वापसी प्रकार के रूप में CompletableStage इंटरफ़ेस का उपयोग होता है, मैं एक सार्वजनिक एपीआई को डिजाइन किया गया था, क्योंकि:

  • क्या @assylias और @Holger इंटरफ़ेस बनाम के बारे में कहा वसूली और चेनिंग क्षमता
  • और तथ्य यह है CompletableStage एक विधि CompletableFuture<T> toCompletableFuture() है।
संबंधित मुद्दे

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