2009-10-15 11 views
14

कारखाने के वर्गों के लिए स्थैतिक होने के लिए यह सामान्य जगह है, और कारखाने के तरीके स्थिर भी हैं।फैक्टरी निर्माण के तरीके हमेशा स्थिर?

क्या डिजाइन पैटर्न पैटर्न में जीओएफ ने कभी भी निर्धारित किया है कि पैटर्न की सख्त परिभाषा को पूरा करने के लिए कारखानों और उनके तरीकों को स्थैतिक होना चाहिए?

कारखानों +/विधियों स्थिर पैटर्न के परिणामस्वरूप स्थिर है? राज्य डेटा सामान्य रूप से कारखाने वर्ग द्वारा बनाए रखा नहीं जाता है, इसलिए वे सामान्य रूप से स्थिर होते हैं।

उत्तर

11

मुझे विश्वास नहीं है कि पैटर्न की "सख्त परिभाषा" जैसी कोई चीज़ है। एक समस्या के सार को पकड़ने के लिए उनके प्रकृति पैटर्न मौजूद हैं जो सॉफ़्टवेयर में समय और समय को फिर से फसल करते हैं और यह बताते हैं कि समाधान कैसे दिख सकता है।

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

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

+2

+1 वास्तव में आपके लिए अपनी सोच करने के लिए पैटर्न की उम्मीद नहीं करना महत्वपूर्ण है, पैटर्न सख्त नहीं हैं, पैटर्न कमजोर नहीं हैं, पैटर्न नियंत्रण में नहीं हैं! – djna

6

नहीं, कारखानों में राज्य हो सकता है। यह आवश्यक है कि इस पर निर्भर करता है।

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

जब तक आपको विशेष रूप से उनकी आवश्यकता न हो तब तक चले जाओ।

+0

कुछ भाषाओं में –

3

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

फैक्टरी विधि के मामले में - यह स्थिर रखना (वास्तव में जाने का कोई अन्य उचित तरीका नहीं है))।

0

मुझे लगता है कि मेरा BlueCarFactory और मेरा RedCarFactory दोनों में एक विधि createCar है। इसे पैरामीटर करने के द्वारा वास्तविक निर्माण विधि का पुन: उपयोग करना सामान्य बात है। एक तो CarFactory(blue) और CarFactory(red) बना देगा। इसका मतलब है कि ऑब्जेक्ट को उत्पादित कारों के रंग को स्टोर करने के लिए सदस्य चर की आवश्यकता होती है।

निष्कर्ष: फैक्टरी वर्ग स्थिर की विधि बनाने का कोई मतलब नहीं है। सिंगलटन फैक्ट्री ऑब्जेक्ट बनाने के लिए यह समझ में आता है।

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