"ஹலோ, அமிகோ! இன்னைக்கு எல்லி அடாப்டர் பேட்டர்ன் பத்தி சொன்னாரு."

I/O ஸ்ட்ரீம்கள் தொடர்பான பெரும்பாலான வகுப்புகள் அடாப்டர்களாக செயல்படுத்தப்படுகின்றன. அவை சமமான இடைமுகங்களை மாற்றுகின்றன அல்லது அவற்றை இணைக்கின்றன, எளிமையானது முதல் சிக்கலானது வரை நகரும்.

" InputStreamReader மற்றும் BufferedReader ஆகியவையும் அடாப்டர்களா? குறைந்தபட்சம், அவை பயன்படுத்தப்படும் விதத்தில் அடாப்டர்களைப் போலவே இருக்கும்: ஒரு பொருள் உருவாக்கப்பட்ட பிறகு, அது மற்றொரு வகுப்பின் கட்டமைப்பாளருக்கு அனுப்பப்படுகிறது."

"ஆம், InputStreamReader InputStream இடைமுகத்தை ரீடர் இடைமுகமாக மாற்றுகிறது . BufferedReader அதன் தூய வடிவில் ஒரு அடாப்டர் அல்ல, ஏனெனில் ஜாவாவின் படைப்பாளிகள் அதன் முறைகளுக்கு தங்களுடைய தனி இடைமுகத்தை கொடுக்க வேண்டாம் என்று முடிவு செய்தனர். ஆனால் அது அன்பான ஆவி."

ஒரு கோடிக்கணக்கான வெவ்வேறு வகுப்புகளை எழுதுவதற்குப் பதிலாக, ஜாவாவின் படைப்பாளிகள் இரண்டு டஜன் அடாப்டர்களை எழுதி, ஒரு புரோகிராமர் விரும்பினாலும், அவற்றை ஒன்றுடன் ஒன்று இணைக்க அனுமதித்தனர்.

இந்த அணுகுமுறை மிகவும் வசதியானது. ஒரு புரோகிராமர் எப்பொழுதும் தனது வகுப்பு மற்றும்/அல்லது அடாப்டரை எழுதலாம், அது ஒரு நிலையான இடைமுகத்தை செயல்படுத்தலாம் மற்றும் அவர் உருவாக்கும் அடாப்டர் பொருள்களின் சங்கிலியில் அதைச் சேர்க்கலாம்.

"எனவே அது எப்படி வேலை செய்கிறது. பெரிய சிக்கலான வகுப்புகளுக்குப் பதிலாக, நாங்கள் எளிய பொருள்கள் மற்றும் அடாப்டர்களின் சங்கிலிகளை உருவாக்குகிறோம். பின்னர் நீங்கள் அவற்றை உருவாக்கி அவற்றை சரியான வரிசையில் இணைக்கவும்!"

"மற்றும் விடுபட்டதை நீங்கள் செயல்படுத்துகிறீர்கள்."

"ஆம், எனக்குப் புரிந்தது."

"ஆனால் உண்மையில் இன்று நான் உங்களுக்கு ரீடர் மற்றும் ரைட்டர் பற்றி சொல்ல விரும்பினேன் . இவை இரண்டும் இன்புட்ஸ்ட்ரீம் மற்றும் அவுட்புட்ஸ்ட்ரீம் வகுப்புகளுக்கு மிகவும் ஒத்த இரண்டு சுருக்க வகுப்புகள். ஆனால் அந்த வகுப்புகளைப் போலல்லாமல், இந்த இரண்டு வகுப்புகளும் எழுத்துகளுடன் வேலை செய்கின்றன. அவை எழுத்துக்களைப் படித்து எழுதுகின்றன. அவை உரை தகவல்களுடன் பணிபுரியும் போது மிகவும் வசதியானது. அவர்கள் வைத்திருக்கும் முறைகளைப் பார்ப்போம்:"

வாசகர் முறைகள் முறை என்ன செய்கிறது
int read(char[] cbuf);
"இந்த முறை இடையகம் நிரம்பும் வரை அல்லது மூலத்தில் படிக்க வேண்டிய எழுத்துகள் இல்லாத வரை , இடையகத்தில் ( சார் வரிசை ) பல எழுத்துக்களை உடனடியாகப் படிக்கிறது." இந்த முறை உண்மையில் படித்த எழுத்துக்களின் எண்ணிக்கையை வழங்குகிறது (அவை வரிசையின் நீளத்தை விட குறைவாக இருக்கலாம்)
int read();
"இந்த முறை ஒரு எழுத்தைப் படித்து அதைத் திருப்பித் தருகிறது. தோற்றத்திற்கான எண்ணாக அதன் முடிவு விரிவுபடுத்தப்படுகிறது. எழுத்துகள் இல்லை என்றால், முறை -1ஐத் தருகிறது."
boolean ready();
படிக்கும் முறைகளுக்கு படிக்காத எழுத்துக்கள் இருந்தால் இந்த முறை உண்மையாக இருக்கும்
void close();
இந்த முறை ஸ்ட்ரீமை "மூடுகிறது". நீங்கள் ஸ்ட்ரீமில் வேலை செய்து முடித்ததும் இதை அழைக்கலாம்.
பின்னர், கோப்பை மூடுவதற்கு தேவையான வீட்டு பராமரிப்பு செயல்பாடுகளை ஆப்ஜெக்ட் செய்கிறது
.

"ரீடரின் ரீட் (char [] cbuf) முறையானது, ஒரு நேரத்தில் ஒரு எழுத்தைக் காட்டிலும், எழுத்துகளின் முழுத் தொகுதிகளையும் படிக்க உதவுகிறது. எனவே இது வேகமாகவும் வசதியாகவும் இருக்கிறது."

"சரியாக. இப்போது ரைட்டருக்கு என்ன முறைகள் உள்ளன என்று பார்ப்போம்:"

முறை முறை என்ன செய்கிறது
void write(int c);
இந்த முறை ஒரு எழுத்தை எழுதுகிறது. எண்ணெழுத்து வகை எரிபொருளாக சுருக்கப்பட்டது. கூடுதல் பகுதி வெறுமனே நிராகரிக்கப்படுகிறது.
void write(char[] cbuff);
இந்த முறை எழுத்துக்களின் வரிசையை எழுதுகிறது.
void write(String s);
இந்த முறை ஒரு சரத்தை எழுதுகிறது. இது வெறுமனே எழுத்துக்களின் வரிசையாக மாற்றப்படுகிறது, பின்னர் இரண்டாவது முறை அழைக்கப்படுகிறது.
void flush();
இதுவரை எழுதப்படாத எந்தத் தரவையும் ஸ்ட்ரீம் உள்நாட்டில் சேமித்து வைத்திருந்தால், இந்த முறை அதை எழுதும்படி கட்டாயப்படுத்துகிறது.
void close();
இந்த முறை ஸ்ட்ரீமை "மூடுகிறது". நீங்கள் ஸ்ட்ரீமில் வேலை செய்து முடித்ததும் இதை அழைக்கலாம்.
அப்ஜெக்ட் பின்னர் கோப்பை மூடுவதற்கு தேவையான வீட்டு பராமரிப்பு செயல்பாடுகளை செய்கிறது.

வாசகரும் எழுத்தாளரும் சுருக்க வகுப்புகள் என்பதைப் புரிந்துகொள்வது அவசியம் . அவர்கள் எதையும் செய்யவில்லை மற்றும் கிட்டத்தட்ட எந்த குறியீட்டையும் கொண்டிருக்கவில்லை. அவர்களின் அனைத்து முறைகளும் அவர்களுக்கு மரபுரிமையாக இருக்கும் வகுப்புகளில் செயல்படுத்தப்பட வேண்டும். வகுப்புகள் எவ்வாறு செயல்படுகின்றன என்பதைத் தரப்படுத்துவதே அவர்களின் வேலை . டெவலப்பர்கள் ஒருவரையொருவர் தொடர்புகொள்வதற்கு தங்கள் சொந்த தரங்களைக் கண்டுபிடிக்க வேண்டிய அவசியமில்லை. ஒரு சில அடிப்படைத் தரங்களைப் பராமரிப்பது அனைவருக்கும் மிகவும் வசதியானது. பல்வேறு புரோகிராமர்களால் எழுதப்பட்ட வகுப்புகள் ஜாவாவின் படைப்பாளிகளால் எழுதப்பட்ட வகுப்புகளுடன் மட்டுமல்லாமல், பிற புரோகிராமர்களால் எழுதப்பட்ட வகுப்புகளுடனும் எளிதாக தொடர்பு கொள்ள இது அனுமதிக்கிறது.

தரநிலைகள் சக்திவாய்ந்தவை.

"நான் ஒப்புக்கொள்கிறேன். பொதுவான தரநிலைகளை ஆதரிப்பது அனைவருக்கும் நன்மை பயக்கும்."