आपको इन दो पैटर्न के लिए बहुत सारे एप्लिकेशन मिलेंगे, इसलिए सुनिश्चित करें कि आपको इस बात की ठोस समझ है कि वे कैसे काम करते हैं और उनका उपयोग कब करना है।
जावास्क्रिप्ट डिजाइन पैटर्न सॉफ्टवेयर विकास में आम समस्याओं के सिद्ध समाधान प्रदान करते हैं। इन प्रतिमानों को समझने और लागू करने से आप बेहतर, अधिक कुशल जावास्क्रिप्ट कोड लिख सकेंगे।
जावास्क्रिप्ट डिजाइन पैटर्न का परिचय
जावास्क्रिप्ट डिज़ाइन पैटर्न में निहित अवधारणाएँ आपको इस बारे में मार्गदर्शन करने का काम करती हैं कि जावास्क्रिप्ट डेवलपर के रूप में आपके सामने आने वाली सामान्य समस्याओं को कैसे दूर किया जाए।
आपको पैटर्न के पीछे अंतर्निहित सार को समझना चाहिए, ताकि आप उन्हें अपनी विशेष समस्या पर लागू कर सकें। आपको यह पहचानने में भी सक्षम होना चाहिए कि कोई भी पैटर्न आपके कोड के लिए कब उपयोगी हो सकता है।
मॉड्यूल पैटर्न
मॉड्यूल पैटर्न, जो एनकैप्सुलेशन प्रदान करता है, का हिस्सा है जावास्क्रिप्ट का मॉड्यूल सिस्टम. यह एक सार्वजनिक एपीआई को उजागर करते हुए एक मॉड्यूल के भीतर निजी डेटा और व्यवहार को सुरक्षित करने का एक तरीका प्रदान करता है। यह आपको निजी और सार्वजनिक पहुंच स्तरों के साथ स्व-निहित मॉड्यूल ऑब्जेक्ट बनाने की अनुमति देता है।
यह थोड़ा सा है कि आप कैसे कर सकते हैं जावा जैसी भाषा में कक्षा में एक्सेस संशोधक का उपयोग करें या सी ++।
जावास्क्रिप्ट में, आप क्लोजर का उपयोग करके मॉड्यूल पैटर्न को लागू कर सकते हैं।
निजी सदस्यों (फ़ंक्शंस, चर, डेटा) को बंद करने के लिए एक क्लोजर का उपयोग करके, आप एक ऐसा दायरा बनाते हैं जहाँ ये सदस्य पहुँच योग्य होते हैं लेकिन बाहरी दुनिया के सीधे सामने नहीं आते हैं। यह आंतरिक विवरण को बाहरी कोड से छिपाकर रखते हुए, एनकैप्सुलेशन प्राप्त करने में मदद करता है।
इसके अतिरिक्त, एक सार्वजनिक एपीआई को बंद करने से लौटने से कुछ कार्यों या संपत्तियों तक निजी पहुंच की अनुमति मिलती है जिसे आप मॉड्यूल के इंटरफ़ेस के हिस्से के रूप में उजागर करना चाहते हैं।
यह आपको नियंत्रण देगा कि मॉड्यूल के कौन से हिस्से कोड बेस के अन्य हिस्सों तक पहुंच योग्य हैं। यह सार्वजनिक और निजी कार्यक्षमता के बीच स्पष्ट सीमा बनाए रखता है।
यहाँ एक उदाहरण है:
कॉन्स्ट शॉपिंगकार्टमॉड्यूल = (समारोह () {
// निजी डेटा
होने देना कार्टआइटम = [];// निजी तरीका
समारोहकुल आइटम की गणना करें() {
वापस करना कार्टआइटम्स.रिड्यूस ((कुल, मद) => कुल + मद। मात्रा, 0);
}// सार्वजनिक एपीआई
वापस करना {
ऐडआइटम (आइटम) {
कार्टआइटम.पुश (आइटम);
},getTotalItems () {
वापस करना कैलकुलेट टोटलआइटम्स ();
},कार्ट को खाली करें() {
कार्टआइटम = [];
}
};
})();// उपयोग उदाहरण
ShoppingCartModule.addItem({ नाम: 'उत्पाद 1', मात्रा: 2 });
ShoppingCartModule.addItem({ नाम: 'उत्पाद 2', मात्रा: 1 });सांत्वना देनालॉग (शॉपिंगकार्टमॉड्यूल.getTotalItems ()); // आउटपुट: 3
शॉपिंगकार्टमॉड्यूल.क्लियरकार्ट();
सांत्वना देनालॉग (शॉपिंगकार्टमॉड्यूल.getTotalItems ()); // आउटपुट: 0
इस उदाहरण में, शॉपिंगकार्टमॉड्यूल मॉड्यूल पैटर्न का उपयोग करके बनाए गए मॉड्यूल का प्रतिनिधित्व करता है। कोड निष्पादन इस प्रकार है:
- आईआईएफई पूरे कोड ब्लॉक को लपेटता है, एक ऐसा फ़ंक्शन बनाता है जिसे तुरंत घोषणा पर निष्पादित किया जाता है। यह मॉड्यूल के सदस्यों के लिए एक निजी दायरा स्थापित करता है।
- कार्टआइटम एक निजी सरणी है। यह मॉड्यूल के बाहर से सीधे पहुंच योग्य नहीं है।
- गणना कुल आइटम () एक निजी तरीका है जो कार्ट में कुल आइटम की गणना करता है। यह उपयोग करता है कम करना() पुनरावृति करने की विधि कार्टआइटम सरणी और सभी वस्तुओं की मात्रा का योग करें।
- मॉड्यूल अपने सार्वजनिक एपीआई को वस्तु शाब्दिक के रूप में लौटाता है, तीन सार्वजनिक तरीकों को उजागर करता है: मद जोड़ें(), getTotalItems (), और कार्ट को खाली करें().
- मॉड्यूल के बाहर, आप शॉपिंग कार्ट की कार्यक्षमता के साथ इंटरैक्ट करने के लिए मॉड्यूल के सार्वजनिक तरीकों तक पहुंच सकते हैं।
यह उदाहरण दर्शाता है कि कैसे मॉड्यूल पैटर्न आपको निजी डेटा को समाहित करने की अनुमति देता है (कार्टआइटम) और व्यवहार (कुल आइटम की गणना करें) मॉड्यूल के भीतर एक सार्वजनिक इंटरफ़ेस प्रदान करते समय (मद जोड़ें, getTotalItems, और कार्ट को खाली करें) मॉड्यूल के साथ बातचीत करने के लिए।
पर्यवेक्षक पैटर्न
ऑब्जर्वर पैटर्न वस्तुओं के बीच एक-से-कई निर्भरता स्थापित करता है। जब एक वस्तु की स्थिति बदलती है, तो यह उसके सभी आश्रितों को सूचित करता है, और वे स्वचालित रूप से अपडेट हो जाते हैं। यह पैटर्न विशेष रूप से इवेंट-संचालित इंटरैक्शन या सिस्टम में घटकों को अलग करने के प्रबंधन के लिए उपयोगी है।
जावास्क्रिप्ट में, आप ऑब्जर्वर पैटर्न को लागू कर सकते हैं अंतर्निहित ऐडइवेंट लिस्टनर का उपयोग करना, डिस्पैचइवेंट तरीके, या कोई घटना प्रबंधन तंत्र. पर्यवेक्षकों को घटनाओं या विषयों की सदस्यता लेने से, आप विशिष्ट घटनाओं के होने पर उन्हें सूचित और अद्यतन कर सकते हैं।
उदाहरण के लिए, आप एक साधारण सूचना प्रणाली को लागू करने के लिए ऑब्जर्वर पैटर्न का उपयोग कर सकते हैं:
// पर्यवेक्षक पैटर्न कार्यान्वयन
समारोहअधिसूचना प्रणाली() {
// ग्राहकों की सूची
यहसब्सक्राइबर्स = [];// सूचनाओं की सदस्यता लेने की विधि
यहसदस्यता लें = समारोह (ग्राहक) {
यह.subscribers.push (सब्सक्राइबर);
};// सूचनाओं से सदस्यता समाप्त करने की विधि
यह.अनसब्सक्राइब = समारोह (ग्राहक) {
कॉन्स्ट सूचकांक = यह.subscribers.indexOf (सब्सक्राइबर);अगर (सूचकांक! == -1) {
यह.subscribers.splice (सूचकांक, 1);
}
};// सब्सक्राइबर्स को सूचित करने का तरीका
यहसूचित करें = समारोह (संदेश) {
यह.subscribers.forEach(समारोह (ग्राहक) {
subscriber.receiveNotification (संदेश);
});
};
}// सब्सक्राइबर ऑब्जेक्ट
समारोहग्राहक(नाम) {
// सूचनाएं प्राप्त करने और संभालने की विधि
यह.प्राप्त अधिसूचना = समारोह (संदेश) {
सांत्वना देनालॉग (नाम + 'प्राप्त अधिसूचना:' + संदेश);
};
}// उपयोग उदाहरण
कॉन्स्ट सूचना प्रणाली = नया अधिसूचना प्रणाली ();// सब्सक्राइबर बनाएं
कॉन्स्ट ग्राहक 1 = नया सब्सक्राइबर('सब्सक्राइबर 1');
कॉन्स्ट सब्सक्राइबर2 = नया सब्सक्राइबर('सब्सक्राइबर 2');// सब्सक्राइबर्स को नोटिफिकेशन सिस्टम में सब्सक्राइब करें
अधिसूचना सिस्टम.सब्सक्राइब (सब्सक्राइबर 1);
अधिसूचना सिस्टम.सब्सक्राइब (सब्सक्राइबर 2);
// सब्सक्राइबर्स को सूचित करें
सूचना प्रणाली। सूचित करें ('नई अधिसूचना!');
यहाँ लक्ष्य एक विशिष्ट घटना होने पर कई ग्राहकों को सूचनाएं प्राप्त करने की अनुमति देना है।
अधिसूचना प्रणाली फ़ंक्शन उस सिस्टम का प्रतिनिधित्व करता है जो सूचनाएं भेजता है, और ग्राहक फ़ंक्शन सूचनाओं के प्राप्तकर्ताओं का प्रतिनिधित्व करता है।
अधिसूचना सिस्टम में एक सरणी होती है जिसे कहा जाता है ग्राहकों उन ग्राहकों को संग्रहीत करने के लिए जो सूचनाएं प्राप्त करना चाहते हैं। सदस्यता लें मेथड सब्सक्राइबर्स को सब्सक्राइबर्स ऐरे में खुद को जोड़कर रजिस्टर करने की अनुमति देता है। सदस्यता रद्द विधि ग्राहकों को सरणी से हटा देगी।
सूचित करें अधिसूचना सिस्टम में विधि सब्सक्राइबर सरणी के माध्यम से पुनरावृत्त करती है और कॉल करती है सूचना प्राप्त करें विधि प्रत्येक ग्राहक पर, उन्हें सूचनाओं को संभालने की अनुमति देता है।
सब्सक्राइबर फ़ंक्शन के उदाहरण सब्सक्राइबर का प्रतिनिधित्व करते हैं। प्रत्येक सब्सक्राइबर के पास एक रिसीव नोटिफिकेशन मेथड होता है जो निर्धारित करता है कि वे प्राप्त नोटिफिकेशन को कैसे हैंडल करते हैं। इस उदाहरण में, विधि प्राप्त संदेश को कंसोल में लॉग करती है।
पर्यवेक्षक पैटर्न का उपयोग करने के लिए, अधिसूचना सिस्टम का एक उदाहरण बनाएं। फिर आप सब्सक्राइबर के उदाहरण बना सकते हैं और उन्हें सब्सक्राइब विधि का उपयोग करके सूचना प्रणाली में जोड़ सकते हैं।
अधिसूचना भेजने से प्रत्येक ग्राहक के लिए प्राप्त अधिसूचना विधि ट्रिगर होगी, और प्रत्येक ग्राहक के लिए संदेश लॉग करेगा।
ऑब्जर्वर पैटर्न लचीलेपन की अनुमति देते हुए अधिसूचना प्रणाली और ग्राहकों के बीच ढीले युग्मन को सक्षम बनाता है। पैटर्न चिंताओं को अलग करने को बढ़ावा देता है जो इवेंट-संचालित सिस्टम में रखरखाव को आसान बना देगा।
उन्नत जावास्क्रिप्ट पैटर्न का उपयोग करना
उन्नत जावास्क्रिप्ट पैटर्न का प्रभावी ढंग से उपयोग करने के लिए यहां कुछ सामान्य सुझाव दिए गए हैं:
- प्रदर्शन निहितार्थों पर विचार करें: उन्नत पैटर्न अतिरिक्त जटिलता पेश कर सकते हैं, जो प्रदर्शन को प्रभावित कर सकते हैं। प्रदर्शन निहितार्थ के प्रति सचेत रहें और जहां आवश्यक हो, अनुकूलित करें.
- एंटी-पैटर्न से बचें: पैटर्न को अच्छी तरह से समझें और एंटी-पैटर्न में पड़ने या उनका गलत इस्तेमाल करने से बचें। पैटर्न का उपयोग करें जहां वे समझ में आते हैं और आपके एप्लिकेशन की आवश्यकताओं के साथ संरेखित होते हैं।
- कोडिंग परंपराओं का पालन करें: अपने कोड बेस में पठनीयता और निरंतरता बनाए रखने के लिए कोडिंग परंपराओं का लगातार पालन करें। सार्थक चर और फ़ंक्शन नामों का उपयोग करें और अपने पैटर्न के लिए स्पष्ट दस्तावेज़ प्रदान करें।
इन पैटर्न को लागू करते समय सावधान रहें
मॉड्यूल पैटर्न एनकैप्सुलेशन की अनुमति देता है और डेटा गोपनीयता, कोड संगठन और स्व-निहित मॉड्यूल के निर्माण को बढ़ावा देता है।
दूसरी ओर, ऑब्जर्वर पैटर्न विषय-ग्राहक संबंध स्थापित करके घटकों के बीच संचार की सुविधा प्रदान करता है।
उन्नत जावास्क्रिप्ट पैटर्न लागू करते समय आपको संभावित नुकसान और सामान्य गलतियों से अवगत होना चाहिए। जहाँ सरल समाधान मौजूद हैं या अत्यधिक जटिल कोड बनाने वाले पैटर्न के अति प्रयोग से बचें। यह सुनिश्चित करने के लिए कि यह रखरखाव योग्य बना रहे, नियमित रूप से अपने कोड की समीक्षा करें और उसे दोबारा सुधारें।