2010-02-16 6 views
8

मैं कोड को संशोधित कर रहा हूं मैंने लिखा नहीं है कि जावामेल का उपयोग करता है, और थोड़ी परेशानी हो रही है कि जावामेल एपीआई किस तरह से डिज़ाइन किया गया है। मुझे यह महसूस हो रहा है कि अगर मैं समझ गया, तो मैं बेहतर काम कर रहा था।जावामेल ट्रांसपोर्ट.send() एक स्थिर विधि क्यों है?

हम कहते हैं:

transport = session.getTransport("smtp"); 
transport.connect(hostName, port, user, password); 

तो क्यों ग्रहण मुझे चेतावनी है यह है कि:

transport.send(message, message.getAllRecipients()); 

एक स्थिर विधि के लिए एक कॉल है?

मुझे ट्रांसपोर्ट ऑब्जेक्ट क्यों मिल रहा है और यदि मैं उस ऑब्जेक्ट का संदेश भेजने के लिए उपयोग नहीं कर सकता तो सेटिंग्स को प्रदान कर रहा हूं? ट्रांसपोर्ट क्लास को यह भी पता है कि संदेश भेजने के लिए किस सर्वर और अन्य सेटिंग्स का उपयोग करना है? यह ठीक काम कर रहा है, जो विश्वास करना मुश्किल है। क्या होगा यदि मैंने दो अलग-अलग सर्वरों के लिए परिवहन ऑब्जेक्ट्स को तुरंत चालू किया था; यह कैसे पता चलेगा कि किस का उपयोग करना है?

इस प्रश्न लिखने के पाठ्यक्रम में, मुझे पता चला है कि मैं वास्तव में बुला जाना चाहिए:

transport.sendMessage(message, message.getAllRecipients()); 

तो स्थिर Transport.send() विधि के उद्देश्य क्या है? क्या यह सिर्फ खराब डिजाइन है, या क्या ऐसा कोई कारण है?

उत्तर

8

Transport.send() नहीं है मूल रूप से एक सुविधा विधि है। हां, अगर आप अपना खुद का Transport उदाहरण प्रबंधित कर रहे हैं, तो sendMessage() पर कॉल करें।

मुझे यकीन नहीं है कि मैं इसे खराब डिजाइन मानता हूं, क्योंकि अक्सर आप परिवहन भेजने और निगरानी के विवरणों का प्रबंधन करने की परवाह नहीं करते हैं। क्रैक send() विधि को खोलने के लिए यह देखने के लिए कि यह आपके लिए क्या करता है। इस विधि को नाम देने या रखने के अन्य तरीके मामूली रूप से बेहतर हो सकते हैं।

5

जावाडोक का कहना है:

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

और हाँ शायद, डिजाइन अच्छा

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

  • कोई संबंधित समस्या नहीं^_^