"Hello, Amigo! Ngayon, sinabi sa iyo ni Ellie ang tungkol sa pattern ng adaptor."

Karamihan sa mga klase na nauugnay sa mga stream ng I/O ay ipinapatupad bilang mga adaptor. Nagko-convert sila ng mga katumbas na interface o ikinonekta nila ang mga ito, simula sa simple at pataas hanggang sa kumplikado.

"Mga adapter din ba ang InputStreamReader at BufferedReader ? Sa pinakakaunti, halos kapareho ang mga ito sa mga adapter sa paraan ng paggamit nito: Pagkatapos malikha ang isang bagay, ipapasa ito sa constructor ng ibang klase."

"Oo, kino-convert ng InputStreamReader ang interface ng InputStream sa interface ng Reader . Ang BufferedReader ay hindi isang adaptor sa pinakadalisay nitong anyo, dahil nagpasya ang mga tagalikha ng Java na huwag bigyan ang mga pamamaraan nito ng sarili nilang interface. Ngunit ito ay magkamag-anak na espiritu."

Sa halip na magsulat ng isang bazillion iba't ibang klase, sumulat ang mga tagalikha ng Java ng dalawang dosenang adapter at pinahintulutan silang kumonekta sa isa't isa gayunpaman maaaring gusto ng isang programmer.

Ang diskarte na ito ay napaka-maginhawa. Maaaring palaging isulat ng programmer ang kanyang klase at/o adaptor, ipatupad ito ng karaniwang interface, at isama ito sa hanay ng mga bagay na adaptor na kanyang ginagawa.

"Kaya ganyan ang lahat. Sa halip na malalaking kumplikadong klase, gumagawa kami ng mga chain ng mga simpleng bagay at adapter. At pagkatapos ay gagawa ka lang ng mga ito at pagsamahin ang mga ito sa tamang pagkakasunud-sunod!"

"At ipapatupad mo ang anumang kulang."

"Oo nakuha ko."

"Ngunit sa totoo lang, gusto kong sabihin sa iyo ang tungkol sa Reader at Writer ngayon. Ito ay dalawang abstract na klase na halos kapareho sa mga klase ng InputStream at OutputStream. Ngunit hindi tulad ng mga klase na iyon, gumagana ang dalawang klase na ito sa mga character. Nagbabasa at nagsusulat sila ng mga character. Sila ay napaka-maginhawa kapag nagtatrabaho sa impormasyong tekstwal. Tingnan natin ang mga pamamaraan na mayroon sila:"

Mga pamamaraan ng mambabasa Ano ang ginagawa ng pamamaraan
int read(char[] cbuf);
"Ang pamamaraang ito ay agad na nagbabasa ng ilang mga character sa buffer ( char array ), hanggang sa mapuno ang buffer o hanggang sa ang pinagmulan ay wala nang mga character na babasahin."
Ibinabalik ng pamamaraan ang bilang ng mga character na aktwal na nabasa (na maaaring mas mababa kaysa sa haba ng array)
int read();
"Ang pamamaraang ito ay nagbabasa ng isang character at ibinabalik ito. Ang resulta ay pinalawak sa isang int para sa hitsura. Kung walang magagamit na mga character, ang pamamaraan ay nagbabalik -1."
boolean ready();
Ang pamamaraang ito ay nagbabalik ng totoo kung mayroong anumang hindi pa nababasang mga character para sa mga nabasang pamamaraan
void close();
Ang pamamaraang ito ay "sinasara" ang stream. Tawagan mo ito kapag tapos ka nang magtrabaho sa stream.
Isinasagawa ng object ang mga operasyong housekeeping na kailangan para isara ang file, atbp.
Sa puntong ito, hindi ka na makakapagbasa ng anumang data mula sa stream.

"Lumalabas na ang Reader's read(char [] cbuf) method ay nagbibigay-daan sa amin na basahin ang buong bloke ng mga character, sa halip na isang character sa isang pagkakataon. Kaya ito ay mas mabilis at mas maginhawa."

"Eksakto. At ngayon tingnan natin kung anong mga pamamaraan ang mayroon si Writer:"

Pamamaraan Ano ang ginagawa ng pamamaraan
void write(int c);
Ang pamamaraang ito ay nagsusulat ng isang karakter. Ang uri ng int ay pinaliit sa isang char. Ang sobrang bahagi ay itinatapon lamang.
void write(char[] cbuff);
Ang pamamaraang ito ay nagsusulat ng isang hanay ng mga character.
void write(String s);
Ang pamamaraang ito ay nagsusulat ng isang string. Ito ay simpleng na-convert sa isang hanay ng mga character at pagkatapos ay ang pangalawang paraan ay tinatawag.
void flush();
Kung ang stream ay panloob na nag-iimbak ng anumang data na hindi pa naisusulat, pinipilit ng pamamaraang ito na maisulat ito.
void close();
Ang pamamaraang ito ay "sinasara" ang stream. Tawagan mo ito kapag tapos ka nang magtrabaho sa stream.
Isinasagawa ng object ang mga operasyong housekeeping na kailangan upang isara ang file, atbp. Hindi ka na makakasulat ng data sa stream, at awtomatikong tinatawag ang flush.

Mahalagang maunawaan na ang Reader at Writer ay mga abstract na klase. Wala silang ginagawa at halos walang code. Ang lahat ng kanilang mga pamamaraan ay kailangang ipatupad sa mga klase na nagmamana sa kanila. Ang kanilang trabaho ay i-standardize kung paano nakikipag-ugnayan ang mga klase . Hindi kailangang mag-imbento ng sarili nilang mga pamantayan ang mga developer para makipag-ugnayan sa isa't isa. Mas maginhawa para sa lahat na mapanatili ang ilang pangunahing pamantayan. Nagbibigay-daan ito sa mga klase na isinulat ng iba't ibang programmer na madaling makipag-ugnayan hindi lamang sa mga klase na isinulat ng mga tagalikha ng Java, kundi pati na rin sa mga klase na isinulat ng ibang mga programmer.

Makapangyarihan ang mga pamantayan.

"Sumasang-ayon ako. Ang pagsuporta sa mga karaniwang pamantayan ay kapaki-pakinabang sa lahat."