क्या आप एक जावास्क्रिप्ट डेवलपर के रूप में पारंपरिक डिजाइन पैटर्न को महत्वपूर्ण मानते हैं, जो अन्य भाषाओं / वातावरणों के साथ महत्वपूर्ण या कम महत्वपूर्ण है।
शास्त्रीय डिजाइन पैटर्न जावास्क्रिप्ट पर लागू नहीं होते हैं।
क्या लागू होता है, मॉड्यूलर और कार्यात्मक कोड लिख रहा है।
आपको कंस्ट्रक्टर्स और प्रथम श्रेणी के कार्यों के मिश्रण का उपयोग करना चाहिए।
एक जावास्क्रिप्ट डेवलपर के रूप में मैं व्यक्तिगत रूप से जावास्क्रिप्ट को LISP के रूप में बल्कि जावा के इलाज के लिए धक्का देता हूं। तो मठों और उच्च स्तरीय कार्यात्मक शैली कोड का अनुकरण करने की कोशिश करें, बल्कि शास्त्रीय OOP कोड का अनुकरण करने का प्रयास करें।
कृपया शीर्ष तीन डिज़ाइन पैटर्न को नाम दें, एक जावास्क्रिप्ट डेवलपर नियमित रूप से उपयोग करते हैं और एक उदाहरण देते हैं कि उन्होंने आपके जावास्क्रिप्ट विकास में कैसे मदद की है।
फिर से डिजाइन पैटर्न वास्तव में इतना लागू नहीं होता है लेकिन नीचे तीन महत्वपूर्ण निर्माण हैं।
- बंद का उपयोग
- प्रथम श्रेणी के कार्यों का उपयोग
- के साथ या बिना वस्तु कारखानों का उपयोग
new
कृपया कुछ प्रकार के संदर्भ छोड़ दें, जिसके लिए मैं पारंपरिक डिजाइन पैटर्न का उपयोग करके एक ही तरह के कोड को करने की तुलना में इस तरह की तकनीकों के उदाहरण दिखा सकता हूं।
आइए नज़र डालते हैं कुछ शास्त्रीय डिज़ाइन पैटर्नों पर और कैसे उन्हें जेएस में लागू करने के साथ-साथ वैकल्पिक पैटर्न जेएस के लिए अधिक अनुकूल हैं:
पर्यवेक्षक पैटर्न:
इसमें node.js
बस है events.EventEmitter
। में jQuery
यह है $.fn.bind
&& $.fn.trigger
। में backbone
यह है Backbone.Events.trigger
और Backbone.Events.bind
। यह एक बहुत ही सामान्य पैटर्न है जिसका उपयोग दिन-प्रतिदिन के कोड में किया जाता है।
मैं कभी नहीं रुकता और सोचता हूं "अरे मैं यहां एक पर्यवेक्षक पैटर्न का उपयोग कर रहा हूं!"। नहीं, यह संदेशों को पास करने का एक निम्न स्तर का तरीका है या बदलाव को रोकने का तरीका है।
उदाहरण के लिए बैकबोन में सभी एमवीसी मॉडल मॉडल onchange
इवेंट के लिए बाध्य होते हैं इसलिए मॉडल को देखने से स्वचालित रूप से कोई भी परिवर्तन देखने के लिए बदल जाता है। हां यह एक शक्तिशाली पैटर्न है, लेकिन इसका उपयोग इवेंट संचालित प्रोग्रामिंग में बहुत आम है जो यह महसूस नहीं कर रहे थे कि यह हर जगह उपयोग कर रहे थे।
में WebSocket
prototcol हमारे पास .on
जो हम करने के लिए बाध्य करने के लिए उपयोग on("message", ...
की घटनाओं। फिर से यह बहुत सामान्य है लेकिन यह एक स्ट्रीम पर एक पर्यवेक्षक है, बल्कि आपके शास्त्रीय OOP पर आधारित है while (byte b = Stream.ReadNextByte())
।
ऑब्जर्वर पैटर्न के ये सभी शक्तिशाली उपयोग हैं। लेकिन यह एक पैटर्न नहीं है जिसका आप उपयोग करते हैं। यह भाषा का एक सरल हिस्सा है। यह सिर्फ कोड है।
मेमेंटो पैटर्न:
यह बस JSON है। यह आपको एक वस्तु की स्थिति को क्रमबद्ध करने की अनुमति देता है ताकि आप एक कार्रवाई को पूर्ववत कर सकें।
function SomeObject() {
var internalState;
this.toJSON = function() {
return internalState;
}
this.set = function(data) {
internalState = data;
}
this.restore = function(json) {
internalState = JSON.parse(json);
}
}
var o = new SomeObject();
o.set("foo"); // foo
var memento = JSON.stringify(o);
o.set("bar"); // bar
o.restore(memento);
जावास्क्रिप्ट में हम मूल रूप से स्मृति चिन्ह के लिए एक एपीआई का समर्थन करते हैं। बस toJSON
किसी भी ऑब्जेक्ट पर एक विधि को परिभाषित करें । जब आप JSON.stringify
इसे कॉल करते हैं तो यह आंतरिक रूप .toJSON
से आपकी वस्तु पर कॉल करेगा वास्तविक डेटा जिसे आप JSON पर क्रमबद्ध करना चाहते हैं।
यह आपको अपने कोड का तुच्छ बनाने की अनुमति देता है।
फिर से मुझे यह एक यादगार पैटर्न का एहसास नहीं है। यह केवल क्रमिक उपकरण का उपयोग कर रहा है जो कि JSON है।
राज्य पैटर्न / रणनीति पैटर्न:
आपको राज्य पैटर्न की आवश्यकता नहीं है। आपके पास प्रथम श्रेणी के कार्य और गतिशील प्रकार हैं। बस कार्यों को इंजेक्ट करें या मक्खी पर गुण बदलें।