मुझे लगता है कि तीन कारक हैं जो यहां खेलते हैं।
क्रिटिकल मास की कमी
सबसे पहले, एक पैटर्न मूल रूप से कुछ कोड को एक नाम देने की तुलना में थोड़ा अधिक है जो कार्यक्षमता के एक विशेष "चंक" को लागू करता है। एकमात्र तरीका जो नाम बहुत वास्तविक मूल्य प्रदान करता है, यदि आप हर किसी पर निर्भर कर सकते हैं यह जानने के लिए कि नाम का अर्थ क्या है तो बस नाम का उपयोग करके, वे तुरंत कोड के बारे में काफी कुछ समझते हैं।
पैटर्न ने उस महत्वपूर्ण द्रव्यमान को कभी स्थापित नहीं किया, जिसकी उन्हें जरूरत थी। बल्कि इसके विपरीत, AAMOF। 20 (या तो) वर्षों में जब से गोफ पुस्तक बाहर आई है, मुझे पूरा यकीन है कि मैंने एक दर्जन से अधिक वार्तालापों को नहीं देखा है जिसमें हर कोई वास्तव में संचार को बेहतर बनाने के लिए उनके उपयोग के लिए पर्याप्त डिजाइन पैटर्न जानता था।
इसे थोड़ा और विचित्र रूप से लगाने के लिए: डिज़ाइन पैटर्न विशेष रूप से विफल रहे क्योंकि वे विफल रहे।
बहुत सारे पैटर्न
मुझे लगता है कि दूसरा प्रमुख कारक है, अगर कुछ भी, तो उन्होंने शुरुआत में बहुत सारे पैटर्न का नाम दिया। उचित संख्या में मामलों में, पैटर्न के बीच के अंतर पर्याप्त रूप से सूक्ष्म हैं कि यह वास्तविक निश्चितता के साथ कहना असंभव है कि क्या एक विशेष वर्ग एक पैटर्न या किसी अन्य (या शायद दोनों - या शायद न तो) पर फिट बैठता है।
आशय यह था कि आप उच्च स्तर पर कोड के बारे में बात कर सकेंगे। आप किसी विशेष पैटर्न के कार्यान्वयन के रूप में कोड का एक बड़ा हिस्सा लेबल करने में सक्षम होंगे। बस उस पूर्व-निर्धारित नाम का उपयोग करके, हर सुनने वाला आमतौर पर उतना ही जानता होगा जितना कि वे उस कोड के बारे में परवाह करते हैं, इसलिए आप अगली चीज़ पर जा सकते हैं।
वास्तविकता लगभग विपरीत हो जाती है। मान लीजिए कि आप एक बैठक में हैं और उन्हें बताएं कि यह विशेष वर्ग एक मुखौटा है। बैठक में आधे लोग या तो कभी नहीं जानते थे या लंबे समय से भूल गए हैं कि वास्तव में इसका क्या मतलब है। उनमें से एक आपको एक मुखौटा के बीच सटीक अंतर (ओं) की याद दिलाने के लिए कहता है, और कहता है, एक प्रॉक्सी। ओह, और कुछ लोग जो वास्तव में पैटर्न जानते हैं, बाकी बैठक में बहस करते हुए बिताते हैं कि क्या इसे वास्तव में एक मुखौटा या "सिर्फ" एक एडेप्टर माना जाना चाहिए (एक आदमी अभी भी जोर देकर कह रहा है कि यह उसके लिए एक प्रॉक्सी की तरह लगता है)।
यह देखते हुए कि आपका इरादा वास्तव में सिर्फ यह कहने के लिए था: "यह कोड बहुत दिलचस्प नहीं है; चलो आगे बढ़ते हैं", केवल एक पैटर्न के नाम का उपयोग करने की कोशिश करते हुए, व्याकुलता को जोड़ा, मूल्य नहीं।
हत्तोसाहित
अधिकांश डिजाइन पैटर्न वास्तव में कोड के दिलचस्प हिस्सों से नहीं निपटते हैं। वे इस तरह की चीजों से निपटते हैं: "मैं इन वस्तुओं को कैसे बनाऊं?", और "मुझे उस वस्तु से कैसे बात करनी चाहिए?" इन के लिए पैटर्न के नाम याद रखना (और साथ ही विवरण और इस तरह के ऊपर उल्लिखित तर्क) बस चीजों में बहुत सारी ऊर्जा डाल रहे हैं, ज्यादातर प्रोग्रामर बस बहुत परवाह नहीं करते हैं।
इसे थोड़ा अलग तरीके से रखने के लिए: पैटर्न उन चीजों से निपटते हैं जो बहुत सारे कार्यक्रमों के बीच समान हैं - लेकिन क्या वास्तव में एक कार्यक्रम को दिलचस्प बनाता है यह अन्य कार्यक्रमों से अलग कैसे है ।
सारांश
डिज़ाइन पैटर्न विफल हुए क्योंकि:
- वे महत्वपूर्ण द्रव्यमान प्राप्त करने में विफल रहे।
- स्पष्टता की गारंटी के लिए पैटर्न के बीच अंतर अपर्याप्त था।
- वे ज्यादातर कोड के हिस्सों से निपटते हैं, लगभग किसी को भी वास्तव में परवाह नहीं है।