JavaScript में डिज़ाइन पैटर्न, Node.js के लिए उदाहरणों के साथ
डिज़ाइन पैटर्न सामान्य विकास समस्याओं के सिद्ध समाधान हैं। JavaScript में, विशेष रूप से Node.js वातावरण में, वे स्केलेबल, मेंटेन करने योग्य और पुन: प्रयोज्य कोड बनाने में मदद करते हैं। इस लेख में, हम व्यावहारिक उदाहरणों के साथ चार मुख्य पैटर्न पर चर्चा करेंगे: Singleton, Factory, Observer और Module।
1. Singleton पैटर्न (एकल)
Singleton यह सुनिश्चित करता है कि एक क्लास का केवल एक इंस्टेंस हो, और उस तक वैश्विक पहुँच प्रदान करता है। Node.js में, इसका उपयोग अक्सर डेटाबेस कनेक्शन या एप्लिकेशन कॉन्फ़िगरेशन के लिए किया जाता है।
Node.js में Singleton का कार्यान्वयन
class Database { constructor() { if (Database.instance) { return Database.instance; } this.connection = null; Database.instance = this; }
async connect(uri) { // डेटाबेस कनेक्शन का अनुकरण this.connection = `Connected to ${uri}`; console.log(this.connection); }
getConnection() { return this.connection; }}
// उपयोगconst db1 = new Database();const db2 = new Database();
console.log(db1 === db2); // true
db1.connect('mongodb://localhost:27017/myapp');console.log(db2.getConnection()); // "Connected to mongodb://localhost:27017/myapp"कब उपयोग करें: कनेक्शन पूल प्रबंधन, वैश्विक लॉगर, कैश सिस्टम।
2. Factory पैटर्न (फैक्टरी)
Factory विशिष्ट क्लास निर्दिष्ट किए बिना ऑब्जेक्ट बनाने की अनुमति देता है। यह ऑब्जेक्ट निर्माण के तर्क को केंद्रीकृत करता है, जिससे कोड रखरखाव सरल हो जाता है।
वैलिडेटर के लिए Factory का कार्यान्वयन
class EmailValidator { validate(value) { return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value); }}
class PhoneValidator { validate(value) { return /^\\+?[\\d\\s\\-()]{7,15}$/.test(value); }}
class ValidatorFactory { createValidator(type) { switch (type) { case 'email': return new EmailValidator(); case 'phone': return new PhoneValidator(); default: throw new Error('Unknown validator type'); } }}
// उपयोगconst factory = new ValidatorFactory();const emailValidator = factory.createValidator('email');
console.log(emailValidator.validate('test@example.com')); // trueconsole.log(emailValidator.validate('invalid')); // falseकब उपयोग करें: जटिल ऑब्जेक्ट बनाना, विभिन्न डेटा प्रारूपों (JSON, XML, YAML) के साथ काम करना, UI-कम्पोनेंट जनरेशन।
3. Observer पैटर्न (प्रेक्षक)
Observer एक सब्सक्रिप्शन तंत्र बनाता है, जो एक ऑब्जेक्ट (प्रेक्षकों) को दूसरे ऑब्जेक्ट (विषय) में परिवर्तनों की निगरानी करने की अनुमति देता है। Node.js में, यह पैटर्न EventEmitter क्लास के माध्यम से अंतर्निहित है।
EventEmitter के साथ Observer का कार्यान्वयन
const EventEmitter = require('events');
class NewsPublisher extends EventEmitter { publishArticle(title) { console.log(`📰 लेख प्रकाशित: ${title}`); this.emit('article', { title, date: new Date() }); }}
class Subscriber { constructor(name) { this.name = name; }
receiveArticle(article) { console.log(`🔔 ${this.name} ने प्राप्त किया: "${article.title}"`); }}
// उपयोगconst publisher = new NewsPublisher();const subscriber1 = new Subscriber('अन्ना');const subscriber2 = new Subscriber('इवान');
publisher.on('article', (data) => subscriber1.receiveArticle(data));publisher.on('article', (data) => subscriber2.receiveArticle(data));
publisher.publishArticle('JavaScript में डिज़ाइन पैटर्न');// आउटपुट:// 📰 लेख प्रकाशित: JavaScript में डिज़ाइन पैटर्न// 🔔 अन्ना ने प्राप्त किया: "JavaScript में डिज़ाइन पैटर्न"// 🔔 इवान ने प्राप्त किया: "JavaScript में डिज़ाइन पैटर्न"कब उपयोग करें