2009-05-13 13 views
6

general case में इसकी एक अच्छी चर्चा है।जावा पैटर्न क्लास कन्स्ट्रक्टर के बजाए फ़ैक्टरी विधि का उपयोग क्यों करता है?

हालांकि, मैं विशेष रूप से सोच रहा था कि क्यों Pattern कक्षा compile संरचनात्मक के बजाए ऑब्जेक्ट बनाने के लिए स्थैतिक विधि का उपयोग करती है?

मुझे एक निर्माता का उपयोग करने के लिए और अधिक सहज ज्ञान युक्त लगता है।

+0

अधिक जानकारी के लिए, [डॉ। जोशुआ ब्लोच] (https://en.wikipedia.org/wiki/Joshua_Bloch), अपनी पुस्तक * प्रभावी जावा * (2e) का उद्धरण: [* जावा ऑब्जेक्ट्स बनाना और नष्ट करना - आइटम 1: रचनाकारों के बजाय स्थैतिक फैक्ट्री विधियों पर विचार करें *] (https://www.informit.com/articles/article.aspx?p=1216151) –

उत्तर

9

पैटर्न कक्षा जेडीके में बहुत सी चीजों की तुलना में नई है। जैसा कि मेरा मानना ​​है कि उन्होंने सार्वजनिक रचनाकारों के पुराने दृष्टिकोण की बजाय कारखाने के तरीकों का उपयोग करने के अधिक आधुनिक दृष्टिकोण को अपनाया है। आप वास्तव में मौजूदा वर्गों के लिए कारखाने के तरीकों को फिर से निकालना नहीं कर सकते हैं।

आम तौर पर, फैक्ट्री विधि पर एक निर्माता का उपयोग करने के बहुत सारे कारण नहीं हैं, इसलिए मुझे लगता है कि यह सब कुछ था। कारखाने के तरीके आपको अमूर्त वस्तु निर्माण करने की अनुमति देते हैं, जो बहुत उपयोगी हो सकता है।

6

आप एक ही रेगेक्स के दो Pattern उदाहरण क्यों देंगे? एक स्थैतिक निर्माण विधि संभावित रूप से कैश Pattern एस को उसी ऑब्जेक्ट को वापस करने की अनुमति देती है यदि एक ही रेगेक्स को कई बार पूछा जाता है। संकलन Pattern एस महंगा हो सकता है। इसके अलावा यदि अतिरिक्त compile विधियां आवश्यक हो गईं (विभिन्न वाक्यविन्यास कहें), तो उन्हें रचनाकारों के भ्रमित अधिभारित सेट के बजाय अलग-अलग नाम दिए जा सकते हैं।

+0

सामान्य रूप से आपका तर्क सही है। लेकिन मुझे लगता है कि इस तरह के अनुकूलन वैकल्पिक छोड़ दिया जाना चाहिए। फिर भी ऐसे कई अन्य स्थान हैं जहां यह अनुकूलन लागू किया जा सकता था। – ordnungswidrig

2

Pattern के लिए फ़ैक्टरी विधि का उपयोग करने से अंततः तृतीय पक्ष प्लग-इन रेगेक्स कार्यान्वयन के उपयोग की अनुमति मिल सकती है। दुर्भाग्यवश सूर्य ने फैक्ट्री विधि (प्लग-इन क्षमता, कैशिंग) का उपयोग करते समय प्राप्त की जा सकने वाली किसी भी सुविधा को लागू नहीं किया है।

5

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

विवरण के लिए http://en.wikipedia.org/wiki/Factory_method_pattern देखें - खासकर 'अन्य लाभ और रूप' अनुभाग।

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

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