2.1 राज्य
राज्य एक व्यवहारिक डिजाइन पैटर्न है। इसका उपयोग उन मामलों में किया जाता है, जब कार्यक्रम के निष्पादन के दौरान, वस्तु को अपने राज्य के आधार पर अपना व्यवहार बदलना चाहिए।
पैटर्न में 3 ब्लॉक होते हैं:
प्रसंग एक वर्ग है जिसकी वस्तुओं को राज्य के आधार पर अपना व्यवहार बदलना चाहिए।
राज्य इंटरफ़ेस है जिसे प्रत्येक ठोस राज्य को लागू करना चाहिए। इस इंटरफ़ेस के माध्यम से, कॉन्टेक्स्ट ऑब्जेक्ट राज्य के साथ इंटरैक्ट करता है, इसके लिए मेथड कॉल करता है। इंटरफ़ेस में उस वस्तु के प्रति प्रतिक्रिया के साधन होने चाहिए जिसका व्यवहार बदलना है।
इसके लिए एक इवेंट (पैटर्न पब्लिशर-सब्सक्राइबर) का इस्तेमाल किया जाता है। घटनाओं के होने पर कार्यक्रम के निष्पादन के दौरान राज्य वस्तु को बदलने के लिए यह आवश्यक है। ऐसे मामले हो सकते हैं जहां संदर्भ समय-समय पर संक्रमण के लिए राज्य वस्तु का चुनाव करता है।
ConcreteState1, ConcreteState2 - ठोस राज्यों की कक्षाएं। किस स्थिति में और किस स्थिति में वस्तु वर्तमान स्थिति से गुजर सकती है, इसकी जानकारी होनी चाहिए। उदाहरण के लिए, ConcreteState1 से, एक वस्तु ConcreteState2 और ConcreteState3 पर जा सकती है, और ConcreteState2 से वापस ConcreteState1, और इसी तरह। उनमें से एक की वस्तु को बनाए जाने पर संदर्भ होना चाहिए।
उदाहरण के लिए, आप एक ऐसा खेल लिख रहे हैं जहाँ एक पात्र दौड़ सकता है, तैर सकता है और उड़ सकता है। यदि आपका चरित्र पानी में गिर गया है, तो उसके व्यवहार को पानी में सीमित करना उचित है: अब वह गोली नहीं चला सकता है, लेकिन उसके पास अभी भी कुछ क्रियाएं हैं: आगे, दाएं, बाएं, आदि तैरें।
आपके चरित्र की स्थिति को एक राज्य वस्तु द्वारा वर्णित किया जा सकता है, जिसमें ऐसी विधियाँ हैं जिन्हें कहा जा सकता है और जो कुछ करेगी। और आपके चरित्र के पानी में जाने के बाद, आप बस इसके अंदर किसी अन्य राज्य वस्तु का संदर्भ बदल देते हैं - और यह अपनी स्थिति बदल देता है।
2.2 रणनीति
रणनीति एल्गोरिदम के एक परिवार को परिभाषित करने, प्रत्येक को समाहित करने और उन्हें विनिमेय बनाने के लिए एक व्यवहारिक डिजाइन पैटर्न है। यह आपको उपयुक्त वर्ग को परिभाषित करके एक एल्गोरिथम चुनने की अनुमति देता है।
रणनीति पैटर्न आपको चयनित एल्गोरिथ्म को बदलने की अनुमति देता है, भले ही इसका उपयोग करने वाले क्लाइंट ऑब्जेक्ट्स की परवाह किए बिना।
रणनीति पैटर्न आपको संदर्भ के आधार पर विभिन्न व्यावसायिक नियमों या एल्गोरिदम का उपयोग करने की अनुमति देता है। इसका उपयोग उन मामलों में किया जाता है जहां सिस्टम की वर्तमान स्थिति (या इसके पर्यावरण) के आधार पर एक ही स्थान पर अलग-अलग एल्गोरिदम का उपयोग किया जाना चाहिए।
ताकत:
- विभिन्न एल्गोरिदम के कार्यान्वयन का एनकैप्सुलेशन, सिस्टम व्यावसायिक नियमों में संभावित परिवर्तनों से स्वतंत्र हो जाता है;
- सभी एल्गोरिदम को एक मानक तरीके से कॉल करना;
- स्विच और/या सशर्त बयानों का उपयोग नहीं करना।
यह पैटर्न कुछ हद तक राज्य पैटर्न के समान है, लेकिन यहां जोर राज्य पर नहीं, बल्कि व्यवहार पर है। मान लीजिए कि आपके खेल में कोई चरित्र हथियारों को बदल सकता है। फिर हथियार बदलते समय, आप केवल उस वस्तु के संदर्भ को बदल सकते हैं जो बताती है कि यह हथियार कैसे काम करता है।
2.3 टेम्पलेट विधि
सार वर्ग (अमूर्त वर्ग) - एल्गोरिथ्म के चरणों को लागू करने के लिए उत्तराधिकारियों में प्रतिस्थापित सार संचालन को परिभाषित करता है; एक टेम्पलेट विधि लागू करता है जो एल्गोरिथम के कंकाल को परिभाषित करता है। टेम्पलेट विधि सार वर्ग में परिभाषित प्रतिस्थापित और अन्य परिचालनों को कॉल करती है।
कंक्रीट वर्ग (ठोस वर्ग) - कार्यान्वयन के लिए आवश्यक तरीके से प्रतिस्थापित संचालन को लागू करता है। कंक्रीट वर्ग मानता है कि एल्गोरिथम के अपरिवर्तनीय चरण सार वर्ग में किए जाएंगे।
जरूरत पड़ने पर अक्सर इस पैटर्न का इस्तेमाल किया जाता है:
- एल्गोरिथम के अपरिवर्तनीय भाग का एकल उपयोग, बदलते भाग को उत्तराधिकारियों के विवेक पर छोड़ देता है।
- दोहराव से बचने के लिए कोड का स्थानीयकरण और अलगाव कई वर्गों के लिए सामान्य है।
- इनहेरिटर्स को केवल कुछ स्थानों पर कोड का विस्तार करने की अनुमति दें।
हां, यह पैटर्न एक जोड़ी के उपयोग का वर्णन करता है: एक अमूर्त वर्ग और उसका कार्यान्वयन।
2.4 उत्तरदायित्व की श्रृंखला
जिम्मेदारी की श्रृंखला एक व्यवहारिक डिजाइन पैटर्न है जिसे सिस्टम में जिम्मेदारी के स्तर को व्यवस्थित करने के लिए डिज़ाइन किया गया है।
टेम्प्लेट की उन स्थितियों में उपयोग करने की अनुशंसा की जाती है जहां:
- विकसित प्रणाली में वस्तुओं का एक समूह होता है जो एक निश्चित प्रकार के संदेशों को संसाधित कर सकता है;
- सभी संदेशों को कम से कम एक सिस्टम ऑब्जेक्ट द्वारा संसाधित किया जाना चाहिए;
- सिस्टम में संदेशों को "इसे स्वयं संसाधित करें या इसे किसी अन्य को पास करें" योजना के अनुसार संसाधित किया जाता है, अर्थात, कुछ संदेशों को उस स्तर पर संसाधित किया जाता है जहां वे प्राप्त हुए थे, जबकि अन्य को दूसरे स्तर की वस्तुओं के लिए अग्रेषित किया जाता है।
2.5 स्मृति चिन्ह
कीपर (मेमेंटो) एक व्यवहारिक डिज़ाइन पैटर्न है जो आपको एनकैप्सुलेशन का उल्लंघन किए बिना किसी वस्तु की आंतरिक स्थिति को ठीक करने और सहेजने की अनुमति देता है ताकि इसे बाद में इस स्थिति में बहाल किया जा सके।
गार्जियन पैटर्न का उपयोग तब किया जाता है जब:
- बाद की बहाली के लिए वस्तु (या उसके हिस्से) की स्थिति का एक स्नैपशॉट सहेजना आवश्यक है;
- किसी वस्तु की स्थिति प्राप्त करने के लिए सीधा इंटरफ़ेस कार्यान्वयन विवरण को उजागर करता है और ऑब्जेक्ट एनकैप्सुलेशन को तोड़ता है।
GO TO FULL VERSION