CodeGym /Java Course /मॉड्यूल 3 /वर्तणुकीचे नमुने

वर्तणुकीचे नमुने

मॉड्यूल 3
पातळी 17 , धडा 0
उपलब्ध

पुनरावृत्ती करणारा

इटरेटर एक वर्तनात्मक डिझाइन नमुना आहे. प्रत्येक एकत्रित ऑब्जेक्टचे वर्णन न वापरता एकत्रित ऑब्जेक्टच्या घटकांमध्ये अनुक्रमिक प्रवेशास अनुमती देणार्‍या ऑब्जेक्टचे प्रतिनिधित्व करते.

पुनरावृत्ती करणारा

उदाहरणार्थ, ट्री, लिंक्ड लिस्ट, हॅश टेबल आणि अॅरे यांसारखे घटक इटरेटर ऑब्जेक्ट वापरून ट्रॅव्हर्स केले जाऊ शकतात (आणि सुधारित).

घटकांद्वारे पुनरावृत्ती पुनरावृत्ती ऑब्जेक्टद्वारे केली जाते, संग्रहाद्वारे नाही. हे संकलनाचा इंटरफेस आणि अंमलबजावणी सुलभ करते आणि चिंतेचे अधिक तार्किक पृथक्करण करण्यास प्रोत्साहन देते.

पूर्णतः अंमलात आणलेल्या इटरेटरचे वैशिष्ट्य म्हणजे इटरेटर वापरणार्‍या कोडला पुनरावृत्ती केलेल्या एकूण प्रकाराबद्दल काहीही माहिती नसते.

हा दृष्टिकोन खूप वेळा वापरला जातो. उदाहरणार्थ, तुम्ही डेटाबेसला SQL क्वेरी पाठवता आणि प्रतिसादात तो तुम्हाला एक पुनरावृत्ती करणारा परत करतो (SQL शब्दात, याला सहसा कर्सर म्हणतात). आणि परिणामी इटरेटरच्या मदतीने, तुम्ही SQL प्रतिसादातून एक-एक पंक्ती घेऊ शकता.

आज्ञा

कमांड हा ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंगमध्ये वापरला जाणारा वर्तनात्मक डिझाइन नमुना आहे जो क्रियेचे प्रतिनिधित्व करतो. कमांड ऑब्जेक्टमध्ये क्रिया आणि त्याचे पॅरामीटर्स असतात.

आज्ञा

पद्धत कॉल करण्यासाठी, आपल्याला सहसा आवश्यक असते:

  • ऑब्जेक्ट संदर्भ
  • पद्धतीचे नाव (पद्धतीचा संदर्भ)
  • पद्धत पॅरामीटर मूल्ये
  • वापरलेल्या वस्तूंचा समावेश असलेल्या संदर्भाचा संदर्भ

हा सर्व डेटा एका ऑब्जेक्टमध्ये पॅक करणे आवश्यक आहे - कमांड ( कमांड ).

परंतु इतकेच नाही: सर्व केल्यानंतर, कोणीतरी कमांड कार्यान्वित करणे आवश्यक आहे. तर या पॅटर्नमध्ये आणखी चार संस्थांचा समावेश आहे: कमांड्स ( कमांड ), कमांड रिसीव्हर ( रिसीव्हर ), कमांड कॉलर ( इनव्होकर ) आणि क्लायंट ( क्लायंट ).

एक वस्तूआज्ञाप्राप्तकर्त्याबद्दल माहिती आहे आणि प्राप्तकर्त्याच्या पद्धतीला कॉल करतो. प्राप्तकर्ता पॅरामीटर मूल्ये कमांडमध्ये संग्रहित केली जातात. कॉलरला (आवाहक) कमांड कशी कार्यान्वित करायची हे माहित आहे आणि शक्यतो अंमलात आणलेल्या कमांड्सचा मागोवा ठेवतो. कॉलरला (आवाहक) विशिष्ट कमांडबद्दल काहीही माहिती नसते, त्याला फक्त इंटरफेसबद्दल माहिती असते.

दोन्ही ऑब्जेक्ट्स (कॉलिंग ऑब्जेक्ट आणि अनेक कमांड ऑब्जेक्ट्स) क्लायंट ऑब्जेक्टशी संबंधित आहेत. कोणती आज्ञा कार्यान्वित करायची आणि कधी करायची हे क्लायंट ठरवतो. कमांड कार्यान्वित करण्यासाठी, ते कमांड ऑब्जेक्ट कॉलरला (इनव्होकर) पास करते.

कमांड ऑब्जेक्ट्स वापरल्याने तुम्हाला क्लास मेथड्स किंवा मेथड पॅरामीटर्स माहित नसताना कधीही डेलिगेट किंवा मेथड कॉल्स करणे आवश्यक असलेले सामायिक घटक तयार करणे सोपे होते.

कॉलर ऑब्जेक्ट (इनव्होकर) वापरणे आपल्याला क्लायंटला या अकाउंटिंग मॉडेलबद्दल माहिती न घेता निष्पादित कमांडचे रेकॉर्ड ठेवण्याची परवानगी देते (असे अकाउंटिंग उपयुक्त असू शकते, उदाहरणार्थ, पूर्ववत आणि रीडू कमांड लागू करण्यासाठी).

उदाहरणार्थ, आपण एक प्रोग्राम लिहित आहात जो आपल्याला शेड्यूलवर विविध कार्ये करण्यास अनुमती देतो. एकीकडे, तुमचा प्रोग्राम कार्यांचा मागोवा ठेवतो आणि त्यांचे प्रक्षेपण व्यवस्थापित करतो, दुसरीकडे, त्यात अनेक एक्झिक्युटर असू शकतात, ज्यापैकी प्रत्येकजण त्याच्या स्वत: च्या प्रकारच्या कमांड कार्यान्वित करू शकतो. उदाहरणार्थ, एसएमएस पाठवणे, पत्र पाठवणे, टेलीग्रामवर संदेश पाठवणे इ.

निरीक्षक

निरीक्षक एक वर्तणूक रचना नमुना आहे. एक वर्ग यंत्रणा कार्यान्वित करते जी या वर्गाच्या ऑब्जेक्टला इतर वस्तूंच्या स्थितीतील बदलांबद्दल सूचना प्राप्त करण्यास अनुमती देते आणि अशा प्रकारे त्यांचे निरीक्षण करते.

निरीक्षक

इतर वर्ग ज्या वर्गांची सदस्यता घेतात त्यांना विषय म्हणतात , आणि वर्गणी घेणाऱ्या वर्गांना निरीक्षक म्हणतात .

निरीक्षक नमुना लागू करताना, खालील वर्ग सामान्यतः वापरले जातात:

  • निरीक्षण करण्यायोग्य - एक इंटरफेस जो निरीक्षकांना जोडणे, काढणे आणि सूचित करण्याच्या पद्धती परिभाषित करतो;
  • निरीक्षक - इंटरफेस ज्याद्वारे निरीक्षकास सूचना प्राप्त होते;
  • ConcreteObservable हा कंक्रीट वर्ग आहे जो निरीक्षण करण्यायोग्य इंटरफेस लागू करतो ;
  • ConcreteObserver हा एक ठोस वर्ग आहे जो ऑब्झर्व्हर इंटरफेस लागू करतो .

निरीक्षक नमुना वापरला जातो जेव्हा सिस्टम:

  • किमान एक वस्तू आहे जी संदेश पाठवते;
  • संदेशांचा किमान एक प्राप्तकर्ता आहे आणि अनुप्रयोग चालू असताना त्यांची संख्या आणि रचना बदलू शकते;
  • परस्परसंवादी वर्गांची मजबूत जोडणी टाळते.

हा पॅटर्न बर्‍याचदा अशा परिस्थितीत वापरला जातो ज्यामध्ये संदेश पाठवणार्‍याला प्राप्तकर्ते त्यांना प्रदान केलेल्या माहितीचे काय करतात यात स्वारस्य नसते.

पाहुणा

अभ्यागत एक वर्तणूक रचना नमुना आहे जो इतर वर्गांच्या वस्तूंवर केलेल्या ऑपरेशनचे वर्णन करतो. भेट देणारे किंवा बदलत असताना, सर्व्हिस केलेले वर्ग बदलण्याची गरज नाही.

टेम्प्लेट दुहेरी-डिस्पॅचिंग डाउनकास्टचा अवलंब न करता गमावलेली प्रकारची माहिती पुनर्प्राप्त करण्यासाठी उत्कृष्ट तंत्र प्रदर्शित करते.

पाहुणा

तुम्हाला अनेक ऑब्जेक्ट्सवर काही डिस्कनेक्ट केलेली ऑपरेशन्स करण्याची आवश्यकता आहे, परंतु तुम्हाला त्यांचा कोड दूषित करणे टाळावे लागेल. आणि इच्छित ऑपरेशन करण्यापूर्वी प्रत्येक नोडच्या प्रकाराची क्वेरी करण्याचा आणि पॉइंटरला योग्य प्रकारात कास्ट करण्याचा कोणताही मार्ग किंवा इच्छा नाही.

टेम्पलेट वापरले पाहिजे जर:

  • भिन्न इंटरफेससह भिन्न वर्गांच्या विविध वस्तू आहेत, परंतु विशिष्ट वर्गांवर अवलंबून असलेल्या ऑपरेशन्स त्यांच्यावर केल्या पाहिजेत;
  • संरचनेवर, संरचनेची गुंतागुंत करणारी विविध ऑपरेशन्स करणे आवश्यक आहे;
  • संरचनेवर नवीन ऑपरेशन्स अनेकदा जोडल्या जातात.

मध्यस्थ

मध्यस्थ हा एक वर्तणूक रचना नमुना आहे जो लूज कपलिंग राखून आणि एकमेकांना स्पष्टपणे संदर्भित करण्यासाठी ऑब्जेक्ट्सची आवश्यकता टाळून अनेक ऑब्जेक्ट्सना परस्पर संवाद साधू देतो.

मध्यस्थ

मध्यस्थ पॅटर्न तुम्हाला अनेक वस्तूंचा परस्परसंवाद सुनिश्चित करण्यास अनुमती देतो, एक सैल कपलिंग तयार करताना आणि वस्तूंची एकमेकांना स्पष्टपणे संदर्भित करण्याची आवश्यकता दूर करते.

मध्यस्थ वस्तूंसह माहितीची देवाणघेवाण करण्यासाठी इंटरफेस परिभाषित करतोसहकारी, एक विशिष्ट मध्यस्थ वस्तूंच्या क्रियांचे समन्वय करतोसहकारी.

प्रत्येक सहकारी वर्गाला त्याच्या वस्तूबद्दल माहिती असतेमध्यस्थ, सर्व सहकारी केवळ मध्यस्थाशी माहितीची देवाणघेवाण करतात, त्याच्या अनुपस्थितीत त्यांना थेट माहितीची देवाणघेवाण करावी लागेल.

सहकारीपुनर्विक्रेत्याला विनंत्या पाठवा </span> आणि त्याच्याकडून विनंत्या प्राप्त करा. मध्यस्थ प्रत्येक विनंती एक किंवा अधिककडे पाठवून सहकारी वर्तन लागू करतोसहकारी.

टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION