जावास्क्रिप्ट में डिज़ाइन पैटर्न: उदाहरणों के साथ उन्नत तकनीकें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावास्क्रिप्ट में डिज़ाइन पैटर्न: Node.js पर उदाहरणों के साथ उन्नत स्तर



डिज़ाइन पैटर्न सामान्य समस्याओं के लिए सिद्ध आर्किटेक्चरल समाधान हैं। यदि आप बुनियादी पैटर्न (सिंगलटन, फैक्ट्री, ऑब्जर्वर) से पहले से परिचित हैं, तो अब अधिक जटिल संरचनाओं में गहराई से जाने का समय है। इस लेख में, हम JavaScript (Node.js) उदाहरणों के साथ चार उन्नत GoF पैटर्न पर चर्चा करेंगे: कम्पोजिट, चेन ऑफ रिस्पॉन्सिबिलिटी, स्टेट और मेंटो। ये पैटर्न आपको लचीला, स्केलेबल और रखरखाव योग्य कोड लिखने में मदद करेंगे।



1. कम्पोजिट (Composite)



उद्देश्य: वस्तुओं को एक पेड़ जैसी संरचना में समूहित करने और प्रत्येक वस्तु या समूह के साथ समान रूप से काम करने की अनुमति देता है।



उदाहरण: एक फ़ाइल सिस्टम जहाँ एक फ़ोल्डर में फ़ाइलें और अन्य फ़ोल्डर हो सकते हैं। हम कुल आकार की गणना करना चाहते हैं।



// कम्पोनेंटclass FileSystemComponent {  getSize() {    throw new Error('getSize() विधि लागू की जानी चाहिए');  }}

// लीफclass File extends FileSystemComponent { constructor(name, size) { super(); this.name = name; this.size = size; }

getSize() { return this.size; }}

// कंटेनर (नोड)class Folder extends FileSystemComponent { constructor(name) { super(); this.name = name; this.children = []; }

add(component) { this.children.push(component); }

getSize() { return this.children.reduce((total, child) => total + child.getSize(), 0); }}

// उपयोगconst root = new Folder('root');const src = new Folder('src');const index = new File('index.js', 500);const utils = new File('utils.js', 300);

src.add(index);src.add(utils);root.add(src);root.add(new File('package.json', 200));

console.log(`कुल आकार: ${root.getSize()} बाइट्स`); // 1000 बाइट्स


लाभ: पेड़ों के साथ काम को सरल बनाता है, क्लाइंट से पदानुक्रम की जटिलता को छुपाता है।



2. चेन ऑफ रिस्पॉन्सिबिलिटी (Chain of Responsibility)



उद्देश्य: हैंडलर की श्रृंखला के माध्यम से अनुरोध को पास करने की अनुमति देता है, जब तक कि उनमें से कोई एक अनुरोध को संसाधित न कर दे।



उदाहरण: Express.js (middleware) में HTTP अनुरोधों को संसाधित करना।



class Handler {  setNext(handler) {    this.next = handler;    return handler;  }

handle(request) { if (this.next) { return this.next.handle(request); } return null; }}

class AuthHandler extends Handler { handle(request) { if (!request.token) { return 'त्रुटि: अनधिकृत'; } console.log('AuthHandler: जाँच पास'); return super.handle(request); }}

class RoleHandler extends Handler { handle(request) { if (request.role !== 'admin') { return 'त्रुटि: अपर्याप्त अनुमतियाँ'; } console.log('RoleHandler: भूमिका सत्यापित'); return super.handle(request); }}

class LoggingHandler extends Handler { handle(request) { console.log(`LoggingHandler: ${request.user} से अनुरोध`); return super.handle(request); }}

// श्रृंखला बनानाconst auth = new AuthHandler();const role = new RoleHandler();const log = new LoggingHandler();auth.setNext(role).setNext(log);

const request = { token: 'abc123', role: 'admin', user: 'Ivan' };const result = auth.handle(request);console.log(result); // null (सब ठीक)

const badRequest = { token: 'abc123', role: 'user', user: 'Petr' };console.log(auth.handle(badRequest)); // 'त्रुटि: अपर्याप्त अनुमतियाँ'


लाभ: युग्मन को कम करता है, हैंडलर को जोड़ना/हटाना आसान बनाता है।



3. स्टेट (State)



उद्देश्य: किसी वस्तु को अपनी आंतरिक स्थिति के आधार पर व्यवहार बदलने की अनुमति देता है।



उदाहरण: स्थितियों वाला दस्तावेज़: ड्राफ्ट, मॉडरेशन के तहत, प्रकाशित।



class Docu                

ब्लॉग

पुस्तक अनुशंसाएँ