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