मार्कर इंटरफेस आणि खोल प्रती - १

"हाय, अमिगो!"

"हाय, बिलाबो!"

"आज मी तुम्हाला मार्कर इंटरफेसबद्दल सांगेन ."

"मार्कर इंटरफेस हे पद्धती नसलेले इंटरफेस आहेत. जेव्हा एखादा वर्ग असा इंटरफेस लागू करतो, तेव्हा आम्ही म्हणतो की ते त्याच्याद्वारे चिन्हांकित केले जाते."

"या इंटरफेसच्या उदाहरणांमध्ये हे समाविष्ट आहे: क्लोन करण्यायोग्य, अनुक्रमे करण्यायोग्य, रिमोट ."

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

" रिमोट इंटरफेसचा वापर ऑब्जेक्ट्स ओळखण्यासाठी केला जातो जे रिमोट एक्झिक्यूशनला समर्थन देतात, म्हणजे दुसर्‍या Java व्हर्च्युअल मशीन आणि/किंवा वेगळ्या संगणकावरून मागवल्या जाऊ शकतात अशा पद्धती."

" क्लोनेबल इंटरफेस क्लोनिंगला समर्थन देणारे वर्ग चिन्हांकित करण्यासाठी वापरले जाते."

"अरे, क्लोनिंग किंवा कॉपी करण्याबद्दल."

"कॉपी करण्याचे दोन प्रकार आहेत: उथळ आणि खोल."

" उथळ कॉपी करणे म्हणजे एखाद्या वस्तूची प्रत तयार करणे, ती संदर्भित असलेल्या कोणत्याही वस्तूची डुप्लिकेट न बनवता."

" सखोल कॉपीमध्ये एखाद्या वस्तूची डुप्लिकेट करणे समाविष्ट असते, त्यात ते संदर्भ असलेल्या वस्तू आणि त्या वस्तूंचा संदर्भ असलेल्या वस्तूंचा समावेश होतो."

"विश्वसनीयपणे खोल क्लोन तयार करण्याचा खरोखर चांगला मार्ग आहे."

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

"तुम्ही ते कसे करता ते येथे आहे:"

1) मेमरीमध्ये बफर (बाइट अॅरे) तयार करा.

2) बफरमध्ये ऑब्जेक्ट आणि सबऑब्जेक्ट्स अनुक्रमित करा.

3) बफरमध्ये सेव्ह केलेल्या ऑब्जेक्टची पदानुक्रम डीसीरियलाइज करा.

कोड
BigObject objectOriginal = new BigObject();

ByteArrayOutputStream writeBuffer = new ByteArrayOutputStream();
ObjectOutputStream outputStream = new ObjectOutputStream(writeBuffer);
outputStream.writeObject(objectOriginal);
outputStream.close();

byte[] buffer = writeBuffer.toByteArray();
ByteArrayInputStream readBuffer = new ByteArrayInputStream(buffer);
ObjectInputStream inputStream = new ObjectInputStream(readBuffer);
BigObject objectCopy = (BigObject)inputStream.readObject();

"पहिल्या ओळीत, आम्ही objectOriginal तयार करतो , ज्याला आम्ही क्लोन करू. ऑब्जेक्ट आणि त्याच्या सर्व सबऑब्जेक्ट्सला क्रमिकरण सपोर्ट करणे आवश्यक आहे."

"तिसऱ्या ओळीत, आम्ही एक ByteArrayOutputStream तयार करतो , जो नवीन डेटा जोडला गेल्याने (एखाद्या ArrayList प्रमाणे) गतिमानपणे विस्तारेल."

"ओळ 4 मध्ये, आम्ही एक ObjectOutputStream तयार करतो , जो क्रमिकरणासाठी वापरला जातो."

"ओळ 5 मध्ये, आम्ही आउटपुटस्ट्रीम वापरून ऑब्जेक्ट ओरिजिनलला बाइट अॅरेमध्ये क्रमवारी लावतो आणि बफर लिहिण्यासाठी सेव्ह करतो ."

"8 व्या ओळीत, आम्ही रायटबफरला सामान्य बाइट अॅरेमध्ये रूपांतरित करतो. नंतर आम्ही या अॅरेमधून आमचे नवीन ऑब्जेक्ट 'वाचू'."

"9व्या ओळीत, इनपुटस्ट्रीम प्रमाणे वाचण्यासाठी आम्ही बफरला ByteArrayInputStream मध्ये रूपांतरित करतो."

"ओळ 10 मध्ये, ऑब्जेक्ट वाचण्यासाठी (डिसेरियलाइज) करण्यासाठी आम्ही ऑब्जेक्टइनपुटस्ट्रीम कन्स्ट्रक्टरकडे रीडबफर पास करतो."

"11 व्या ओळीत, आम्ही आमचे ऑब्जेक्ट वाचतो आणि त्यास BigObject मध्ये रूपांतरित करतो ."

"तुला काय वाटत?"

"ते सुंदर आहे."

"आणि तसे, जेव्हा कोड वेगवेगळ्या रंगांमध्ये हायलाइट केला जातो तेव्हा ते समजणे खूप सोपे असते."