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

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

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

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

जावास्क्रिप्ट में उन्नत डिज़ाइन पैटर्न: सिद्धांत से व्यवहार तक

\n\n

डिज़ाइन पैटर्न सॉफ्टवेयर विकास में सामान्य समस्याओं के सिद्ध समाधान हैं। Node.js के साथ काम करने वाले जावास्क्रिप्ट डेवलपर के लिए, उन्नत पैटर्न को समझना स्केलेबल, लचीली और आसानी से रखरखाव योग्य सिस्टम बनाने का मार्ग खोलता है। इस लेख में, हम चार प्रमुख पैटर्न का विश्लेषण करेंगे: Observer, Proxy, Chain of Responsibility और Strategy। प्रत्येक को Node.js पर एक व्यावहारिक उदाहरण के साथ चित्रित किया जाएगा।

\n\n

1. पैटर्न Observer (प्रेक्षक): Node.js में इवेंट-आधारित आर्किटेक्चर

\n\n

Observer मूलभूत व्यवहारिक पैटर्न में से एक है। यह वस्तुओं के बीच "एक-से-अनेक" निर्भरता को परिभाषित करता है: जब एक वस्तु (विषय) अपनी स्थिति बदलती है, तो सभी आश्रित वस्तुओं (प्रेक्षकों) को स्वचालित रूप से सूचित और अद्यतन किया जाता है। Node.js में, यह पैटर्न मॉड्यूल EventEmitter का आधार है।

\n\n

उदाहरण: ऑनलाइन स्टोर के लिए सूचना प्रणाली

\n

मान लीजिए कि हमारे पास एक सर्वर है जो ऑर्डर प्रबंधित करता है। ऑर्डर की स्थिति बदलने पर, कई उप-प्रणालियों को सूचित करने की आवश्यकता होती है: लॉगिंग, ईमेल भेजना और एनालिटिक्स अपडेट करना।

\n\n
const EventEmitter = require('events');\n\n// विषय (Subject)\nclass OrderManager extends EventEmitter {\n    constructor() {\n        super();\n        this.orders = [];\n    }\n\n    createOrder(orderId, items) {\n        const order = { orderId, items, status: 'created', createdAt: new Date() };\n        this.orders.push(order);\n        this.emit('order:created', order);\n        return order;\n    }\n\n    updateStatus(orderId, newStatus) {\n        const order = this.orders.find(o => o.orderId === orderId);\n        if (order) {\n            order.status = newStatus;\n            this.emit('order:statusChanged', order);\n        }\n    }\n}\n\n// प्रेक्षक (Observers)\nfunction logObserver(order) {\n    console.log(`[LOG] Order ${order.orderId}: status changed to ${order.status} at ${new Date().toISOString()}`);\n}\n\nfunction emailObserver(order) {\n    console.log(`[EMAIL] Sending notification for order ${order.orderId} with status ${order.status}`);\n}\n\nfunction analyticsObserver(order) {\n    console.log(`[ANALYTICS] Recording event: order ${order.orderId} -> ${order.status}`);\n}\n\n// उपयोग\nconst manager = new OrderManager();\nmanager.on('order:created', logObserver);\nmanager.on('order:statusChanged', logObserver);\nmanager.on('order:statusChanged', emailObserver);\nmanager.on('order:statusChanged', analyticsObserver);\n\nmanager.createOrder('ORD-001', ['Book', 'Pen']);\nmanager.updateStatus('ORD-001', 'shipped');\n
\n\n

यह दृष्टिकोण विषय के कोड को बदले बिना प्रेक्षकों को जोड़ने या हटाने की अनुमति देता है, जो सिस्टम को लचीला और आसानी से विस्तार योग्य बनाता है।

\n\n

2. पैटर्न Proxy (प्रतिनिधि): पहुंच नियंत्रण और कैशिंग

\n\n

Proxy एक प्रतिस्थापन वस्तु प्रदान करता है जो किसी अन्य वस्तु तक पहुंच को नियंत्रित करता है। जावास्क्रिप्ट में, यह पैटर्न अंतर्निहित वस्तु Proxy के माध्यम से कार्यान्वित किया जाता है, जो मौलिक संचालन (गुणों तक पहुंच, फ़ंक्शन कॉल आदि) को इंटरसेप्ट और पुनर्परिभाषित करने की अनुमति देता है।

\n\n

उदाहरण: API अनुरोधों के लिए कैशिंग प्रॉक्सी

\n

मान लीजिए कि हमारे पास एक सेवा है जो बाहरी API से महंगे अनुरोध करती है। हम बार-बार कॉल से बचने के लिए परिणामों को कैश करना चाहते हैं।

\n\n
// वास्तविक सेवा (Real Subject)\nclass ExternalApiService {\n    async fetchUser(id) {\n        console.log(`Fetching user ${id} from external API...`);\n        // नेटवर्क विलंब का अनुकरण\n        await new Promise(resolve => setTimeout(resolve, 1000));\n        return { id, name: `User ${id}`, email: `user${id}@example.com` };\n    }\n}\n\n// प्रॉक्सी (Proxy)\nclass CachingProxy {\n    constructor(realService) {\n        this.realService = realService;\n        this.cache = new M                

ब्लॉग

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