2010-07-28 15 views
9

संभावित डुप्लिकेट बनाने के लिए कारखाना विधि का उपयोग करना चाहिए:
Factory Pattern. When to use factory methods?
Why do static Create methods exist?क्यों एक वस्तुओं

हालांकि मैं जानता हूँ कि फैक्टरी डिजाइन पैटर्न क्या है। लेकिन मैं समझने में असमर्थ हूं कि इसका उपयोग करने के क्या फायदे हैं। फैक्टरी डिजाइन पैटर्न का उपयोग करके वस्तुओं को क्यों बनाना चाहिए।

+0

क्या यह आपके प्रश्न का उत्तर देता है ?: http://stackoverflow.com/questions/2470290/why-do-static-create-methods-exist – Kobi

+0

सटीक डुप्लिकेट: http://stackoverflow.com/questions/69849/factory -पटर-जब-उपयोग-फैक्ट्री-विधियों/2430719 # 2430719 – kyoryu

उत्तर

9

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

+0

निर्भरता इंजेक्शन उन चीजों में से एक प्रतीत होता है जो गोफ बुक – kyoryu

3

1-लागू करने में आसान।

2-क्लाइंट एप्लिकेशन कोड को भारी रूप से बदलना नहीं है।

3-वर्ग निर्माण क्लाइंट कोड से सार है।

आप भी इस धागे Factory Pattern. When to use factory methods?

+0

धन्यवाद मानते हैं। मैं उस जवाब के बजाय शौकीन था :) – kyoryu

4

आप कारखाने विधि

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

इसके पीछे मूल विचार नियंत्रण निर्माण है।

ग्राहक कॉल को प्रक्रिया
object Factory.GetObject(Spec spec)

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

यह दृष्टिकोण अधिक विस्तृत और लचीला बदलने के लिए है - भविष्य में,

  • आप युक्ति के लिए एक नया समायोजन पैरामीटर जोड़ने और कारखाने विधि के भीतर इसे संभाल LatestAndGreatestSubclass
  • वापस जाने के लिए कर सकता है आप किसी मौजूदा ऑब्जेक्ट को सुधार सकते हैं और पिछले सबक्लास के v2 को वापस कर सकते हैं या पूरी तरह से अलग कार्यान्वयन के साथ स्वैप कर सकते हैं: मौजूदा क्लाइंट और फ़ैक्टरी विधि इंटरफ़ेस को बदलना नहीं होगा।

टिप्पणी बहुत लंबी हो गई ... इसलिए इसे एक उत्तर के रूप में पोस्ट करना पड़ा।

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