इटरेटर
इटरेटर एक व्यवहार डिजाइन पैटर्न है। एक वस्तु का प्रतिनिधित्व करता है जो प्रत्येक समग्र वस्तु के विवरण का उपयोग किए बिना एक समग्र वस्तु के तत्वों तक अनुक्रमिक पहुंच की अनुमति देता है।
उदाहरण के लिए, ट्री, लिंक्ड लिस्ट, हैश टेबल और एरे जैसे तत्वों को Iterator ऑब्जेक्ट का उपयोग करके ट्रैवर्स (और संशोधित) किया जा सकता है।
तत्वों के माध्यम से पुनरावृति पुनरावर्तक वस्तु द्वारा की जाती है, संग्रह द्वारा ही नहीं। यह इंटरफ़ेस और संग्रह के कार्यान्वयन को सरल करता है, और चिंताओं के अधिक तार्किक पृथक्करण को बढ़ावा देता है।
पूरी तरह से कार्यान्वित पुनरावर्तक की एक विशेषता यह है कि पुनरावृत्त समुच्चय के प्रकार के बारे में पुनरावृत्त का उपयोग करने वाले कोड को कुछ भी पता नहीं हो सकता है।
इस उपाय का प्रयोग बहुत बार किया जाता है। उदाहरण के लिए, आप डेटाबेस को एक SQL क्वेरी भेजते हैं, और प्रतिक्रिया में यह आपको एक पुनरावर्तक देता है (SQL शर्तों में, इसे आमतौर पर कर्सर कहा जाता है)। और परिणामी पुनरावर्तक की सहायता से, आप एक-एक करके SQL प्रतिक्रिया से पंक्तियाँ ले सकते हैं।
आज्ञा
एक कमांड एक व्यवहारिक डिज़ाइन पैटर्न है जिसका उपयोग ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में किया जाता है जो एक क्रिया का प्रतिनिधित्व करता है। कमांड ऑब्जेक्ट में स्वयं क्रिया और उसके पैरामीटर होते हैं।
एक विधि को कॉल करने के लिए, आपको आमतौर पर इसकी आवश्यकता होती है:
- वस्तु संदर्भ
- विधि का नाम (विधि संदर्भ)
- विधि पैरामीटर मान
- उस संदर्भ का संदर्भ जिसमें प्रयुक्त वस्तुओं को शामिल किया गया है
इस सभी डेटा को एक ऑब्जेक्ट - कमांड ( कमांड ) में पैक करने की आवश्यकता है।
लेकिन यह सब नहीं है: आखिरकार, किसी को आदेश निष्पादित करना चाहिए। तो इस पैटर्न में चार और संस्थाएँ शामिल हैं: कमांड ( कमांड ), एक कमांड रिसीवर ( रिसीवर ), एक कमांड कॉलर ( इनवॉकर ) और एक क्लाइंट ( क्लाइंट )।
एक वस्तुआज्ञारिसीवर के बारे में जानता है और रिसीवर विधि को कॉल करता है। रिसीवर पैरामीटर मान कमांड में संग्रहीत होते हैं। कॉल करने वाला (इनवोकर) जानता है कि कमांड को कैसे निष्पादित किया जाए और संभवतः निष्पादित कमांड का ट्रैक रखता है। कॉल करने वाले (इनवोकर) को किसी विशेष कमांड के बारे में कुछ नहीं पता होता है, वह केवल इंटरफ़ेस के बारे में जानता है।
दोनों ऑब्जेक्ट (कॉलिंग ऑब्जेक्ट और कई कमांड ऑब्जेक्ट) क्लाइंट ऑब्जेक्ट से संबंधित हैं। क्लाइंट तय करता है कि कौन से कमांड को निष्पादित करना है और कब। एक कमांड को निष्पादित करने के लिए, यह कमांड ऑब्जेक्ट को कॉल करने वाले (इनवोकर) को पास करता है।
कमांड ऑब्जेक्ट्स का उपयोग करना उन साझा घटकों को बनाना आसान बनाता है जिन्हें आपको क्लास विधियों या विधि पैरामीटर को जानने के बिना किसी भी समय प्रतिनिधि या विधि कॉल करने की आवश्यकता होती है।
कॉलर ऑब्जेक्ट (इनवोकर) का उपयोग करने से आपको क्लाइंट को इस लेखा मॉडल के बारे में जानने की आवश्यकता के बिना निष्पादित कमांड का रिकॉर्ड रखने की अनुमति मिलती है (इस तरह के लेखांकन उपयोगी हो सकते हैं, उदाहरण के लिए, पूर्ववत और फिर से कमांड को लागू करने के लिए)।
उदाहरण के लिए, आप एक प्रोग्राम लिख रहे हैं जो आपको एक समय पर विभिन्न कार्य करने की अनुमति देता है। एक ओर, आपका प्रोग्राम कार्यों पर नज़र रखता है और उनके प्रक्षेपण का प्रबंधन करता है, दूसरी ओर, इसमें कई निष्पादक हो सकते हैं, जिनमें से प्रत्येक अपने प्रकार के आदेशों को निष्पादित कर सकता है। उदाहरण के लिए, एसएमएस भेजना, पत्र भेजना, टेलीग्राम पर संदेश भेजना आदि।
देखने वाला
ऑब्जर्वर एक व्यवहार डिजाइन पैटर्न है। एक वर्ग तंत्र लागू करता है जो इस वर्ग की वस्तुओं को अन्य वस्तुओं की स्थिति में परिवर्तन के बारे में सूचनाएं प्राप्त करने की अनुमति देता है और इस प्रकार उनका निरीक्षण करता है।
जिन कक्षाओं को अन्य वर्ग सदस्यता लेते हैं उन्हें विषय कहा जाता है , और सदस्यता लेने वाली कक्षाओं को पर्यवेक्षक कहा जाता है ।
ऑब्जर्वर पैटर्न को लागू करते समय, आमतौर पर निम्नलिखित वर्गों का उपयोग किया जाता है:
- ऑब्जर्वेबल - एक इंटरफ़ेस जो पर्यवेक्षकों को जोड़ने, हटाने और सूचित करने के तरीकों को परिभाषित करता है;
- ऑब्जर्वर - वह इंटरफ़ेस जिसके माध्यम से ऑब्जर्वर सूचना प्राप्त करता है;
- कंक्रीट ऑब्जर्वेबल एक ठोस वर्ग है जो ऑब्जर्वेबल इंटरफ़ेस को लागू करता है ;
- ConcreteObserver एक ठोस वर्ग है जो ऑब्जर्वर इंटरफ़ेस को लागू करता है ।
ऑब्जर्वर पैटर्न का उपयोग तब किया जाता है जब सिस्टम:
- कम से कम एक वस्तु है जो संदेश भेजती है;
- संदेशों का कम से कम एक प्राप्तकर्ता है, और एप्लिकेशन के चलने के दौरान उनकी संख्या और संरचना बदल सकती है;
- बातचीत करने वाली कक्षाओं के मजबूत युग्मन से बचा जाता है।
इस पैटर्न का उपयोग अक्सर उन स्थितियों में किया जाता है जिनमें संदेश भेजने वाले को इस बात में कोई दिलचस्पी नहीं होती है कि प्राप्तकर्ता उन्हें प्रदान की गई जानकारी के साथ क्या करता है।
आगंतुक
विज़िटर एक व्यवहारिक डिज़ाइन पैटर्न है जो एक ऑपरेशन का वर्णन करता है जो अन्य वर्गों की वस्तुओं पर किया जाता है। जब विज़िटर बदलते हैं, तो सर्विस्ड क्लास को बदलने की कोई आवश्यकता नहीं होती है।
टेम्प्लेट डबल-डिस्पैचिंग डाउनकास्ट का सहारा लिए बिना खोई हुई प्रकार की जानकारी को पुनर्प्राप्त करने के लिए क्लासिक तकनीक का प्रदर्शन करता है।
आपको कई वस्तुओं पर कुछ डिस्कनेक्ट किए गए ऑपरेशन करने की आवश्यकता है, लेकिन आपको उनके कोड को प्रदूषित करने से बचने की आवश्यकता है। और वांछित ऑपरेशन करने से पहले प्रत्येक नोड के प्रकार से पूछताछ करने और पॉइंटर को सही प्रकार पर डालने का कोई तरीका या इच्छा नहीं है।
टेम्पलेट का उपयोग किया जाना चाहिए यदि:
- अलग-अलग इंटरफेस के साथ विभिन्न वर्गों की विभिन्न वस्तुएं हैं, लेकिन उन पर संचालन किया जाना चाहिए जो विशिष्ट वर्गों पर निर्भर करते हैं;
- संरचना पर, संरचना को जटिल बनाने वाले विभिन्न कार्यों को करना आवश्यक है;
- संरचना पर नए संचालन अक्सर जोड़े जाते हैं।
मध्यस्थ
मध्यस्थ एक व्यवहारिक डिजाइन पैटर्न है जो ढीले युग्मन को बनाए रखते हुए और वस्तुओं को एक दूसरे को स्पष्ट रूप से संदर्भित करने की आवश्यकता से बचने के लिए कई वस्तुओं को परस्पर क्रिया करने की अनुमति देता है।
मध्यस्थ पैटर्न आपको कई वस्तुओं की बातचीत सुनिश्चित करने की अनुमति देता है, जबकि एक ढीले युग्मन का निर्माण करता है और वस्तुओं को एक दूसरे को स्पष्ट रूप से संदर्भित करने की आवश्यकता को समाप्त करता है।
मध्यस्थ वस्तुओं के साथ सूचनाओं के आदान-प्रदान के लिए एक इंटरफ़ेस को परिभाषित करता हैसहकर्मी, एक विशेष मध्यस्थ वस्तुओं की क्रियाओं का समन्वय करता हैसहकर्मी.
प्रत्येक सहकर्मी वर्ग अपनी वस्तु के बारे में जानता हैमध्यस्थ, सभी सहकर्मी केवल एक मध्यस्थ के साथ सूचनाओं का आदान-प्रदान करते हैं, उनकी अनुपस्थिति में उन्हें सीधे सूचना का आदान-प्रदान करना होगा।
सहकर्मीपुनर्विक्रेता/span> को अनुरोध भेजें और उससे अनुरोध प्राप्त करें। मध्यस्थ प्रत्येक अनुरोध को एक या अधिक को अग्रेषित करके सहकारी व्यवहार को लागू करता हैसहकर्मी.
GO TO FULL VERSION