आज की कोडिंग दुनिया में एक महत्वपूर्ण गलत धारणा यह है कि पैटर्न ब्लॉक का निर्माण कर रहे हैं। आप AbstractFactoryयहां और Flyweightवहां और शायद Singletonवहां पर ले जाते हैं और उन्हें एक्सएमएल और प्रीस्टो के साथ जोड़ते हैं, आपको एक काम करने वाला एप्लिकेशन मिला है।
वे नहीं हैं।
हम्म, यह काफी बड़ा नहीं था।
पैटर्न ब्लॉक का निर्माण नहीं कर रहे हैं
वह बेहतर है।
एक पैटर्न एक ऐसी चीज है जिसका उपयोग आप तब करते हैं जब आप पाते हैं कि आपको एक समस्या मिल गई है - आपको कुछ लचीलेपन की आवश्यकता होती है जो पैटर्न प्रदान करता है, या यह कि जब आप कॉन्फ़िगरेशन फ़ाइल में एक छोटी सी भाषा बना रहे हैं, तो आप भर गए हैं और आप कहते हैं "प्रतीक्षा करें" एक पल, रुकिए, यह अपना स्वयं का व्याख्याकार है जो मैं लिख रहा हूं - यह एक ज्ञात और हल की गई समस्या है, एक दुभाषिया पैटर्न का उपयोग करें । "
लेकिन ध्यान दें, यह कुछ ऐसा है जिसे आप अपने कोड में खोजते हैं , न कि कुछ जिसके साथ आप शुरू करते हैं। जावा के रचनाकारों ने कहा "ओह, हम शुरू में एक फ्लाईवेट को इंटेगर में डाल देंगे", लेकिन एक प्रदर्शन समस्या का एहसास हुआ जिसे फ्लाईवेट द्वारा हल किया जा सकता है ।
और इस प्रकार, कोई "फ़्लो चार्ट" नहीं है जिसका उपयोग आप सही पैटर्न खोजने के लिए करते हैं। पैटर्न एक है समाधान समस्या का एक विशेष प्रकार है कि बार-बार सामना करना पड़ा गया है और यह के मुख्य भागों एक पैटर्न में आसवित करने के लिए।
पैटर्न के साथ शुरू करना एक समाधान होने और समस्या की तलाश करने जैसा है। यह एक बुरी बात है: यह इंजीनियरिंग और डिजाइन में अंततः अनम्यता की ओर जाता है।
जैसा कि आप कोड लिख रहे हैं, जब आपको पता चलता है कि आप एक कारखाना लिख रहे हैं, तो आप कह सकते हैं "आह हा! यह एक कारखाना है जो मैं लिखने वाला हूँ" और कारखाने के पैटर्न को जानने के अपने ज्ञान का उपयोग तेजी से अगले बिट लिखने के लिए करें फैक्टरी पैटर्न को फिर से खोजे बिना कोड। लेकिन आप "मैं यहाँ एक वर्ग मिला है, के साथ शुरू नहीं करता, मैं इसके लिए एक कारखाना लिखूंगा ताकि यह लचीला हो सके" - क्योंकि यह नहीं होगा।
एरिक गामा ( गामा, हेल्म, जॉनसन, और विसीड्स ) के साथ एक साक्षात्कार का एक अंश यहां दिया गया है : डिजाइन पैटर्न का उपयोग कैसे करें :
सभी पैटर्न का उपयोग करने की कोशिश करना एक बुरी बात है, क्योंकि आप सिंथेटिक डिजाइन-सट्टा डिजाइनों के साथ समाप्त हो जाएंगे जिनमें लचीलापन है जो किसी की ज़रूरत नहीं है। इन दिनों सॉफ्टवेयर बहुत जटिल है। हम यह अनुमान लगाने का जोखिम नहीं उठा सकते कि इसे और क्या करना चाहिए। हमें वास्तव में इस पर ध्यान देने की जरूरत है कि इसकी क्या जरूरत है। यही कारण है कि मैं पैटर्न को रिफलेक्ट करना पसंद करता हूं। लोगों को सीखना चाहिए कि जब उन्हें किसी विशेष प्रकार की समस्या या कोड की गंध आती है, जैसा कि लोग इन दिनों कहते हैं, तो वे समाधान खोजने के लिए अपने पैटर्न टूलबॉक्स पर जा सकते हैं।
सॉफ़्टवेयर डिज़ाइन पैटर्न के लिए विकिपीडिया पृष्ठ "संभावना क्या है, जब" का उपयोग करने के लिए सबसे अच्छी मदद - "वर्गीकरण और सूची" अनुभाग में प्रत्येक पैटर्न में श्रेणी का वर्णन है और यह क्या करता है। कोई फ्लोचार्ट नहीं है; वर्णन वहाँ शायद सबसे अच्छा है कि आप "क्या, कब, क्या उपयोग करें" के लिए एक छोटी झलकी के रूप में पाएंगे।
ध्यान दें कि आपको प्रोग्रामिंग के विभिन्न क्षेत्रों में विभिन्न पैटर्न मिलेंगे। वेब डिज़ाइन का अपना सेट होता है जबकि JEE (वेब डिज़ाइन नहीं) में पैटर्न का एक और सेट होता है। वित्तीय प्रोग्रामिंग के लिए पैटर्न स्टैंड अलोन एप्लीकेशन यूआई डिज़ाइन के लिए पूरी तरह से अलग हैं।
इसलिए उन सभी को सूचीबद्ध करने का कोई भी प्रयास स्वाभाविक रूप से अधूरा है। आप एक खोज करते हैं, यह पता लगाते हैं कि इसका उपयोग कैसे करना है और फिर यह अंततः दूसरी प्रकृति बन जाती है और आपको यह सोचने की आवश्यकता नहीं है कि इसे कैसे या कब फिर से उपयोग करना है (जब तक कोई आपसे इसे समझाने के लिए नहीं कहता है)।