"Hello, Amigo! Hari ini, Ellie memberitahu anda tentang corak penyesuai."

Kebanyakan kelas yang berkaitan dengan aliran I/O dilaksanakan sebagai penyesuai. Mereka sama ada menukar antara muka yang setara atau mereka menyambungkannya, bermula daripada yang mudah dan naik ke kompleks.

"Adakah InputStreamReader dan BufferedReader juga penyesuai? Sekurang-kurangnya, ia sangat serupa dengan penyesuai dalam cara ia digunakan: Selepas objek dicipta, ia dihantar kepada pembina kelas lain."

"Ya, InputStreamReader menukar antara muka InputStream kepada antara muka Pembaca . BufferedReader bukanlah penyesuai dalam bentuk yang paling tulen, kerana pencipta Java memutuskan untuk tidak memberikan kaedahnya antara muka berasingan mereka sendiri. Tetapi ia adalah semangat persaudaraan."

Daripada menulis berjuta-juta kelas yang berbeza, pencipta Java menulis dua dozen penyesuai dan membenarkan mereka menyambung antara satu sama lain walau bagaimanapun seorang pengaturcara mungkin mahu.

Pendekatan ini sangat mudah. Seorang pengaturcara sentiasa boleh menulis kelas dan/atau penyesuainya, memintanya melaksanakan antara muka standard dan memasukkannya ke dalam rangkaian objek penyesuai yang sedang dia bina.

"Jadi begitulah cara semuanya berfungsi. Daripada kelas kompleks yang besar, kami membuat rangkaian objek dan penyesuai ringkas. Kemudian anda hanya menciptanya dan menggabungkannya dalam susunan yang betul!"

"Dan anda melaksanakan apa sahaja yang hilang."

"Ya, saya faham."

"Tetapi sebenarnya saya ingin memberitahu anda tentang Pembaca dan Penulis hari ini. Ini adalah dua kelas abstrak yang hampir sama dengan kelas InputStream dan OutputStream. Tetapi tidak seperti kelas tersebut, kedua-dua kelas ini berfungsi dengan aksara. Mereka membaca dan menulis aksara. Mereka adalah sangat mudah apabila bekerja dengan maklumat teks. Mari kita lihat kaedah yang mereka ada:"

Kaedah pembaca Apakah kaedah yang dilakukan
int read(char[] cbuf);
"Kaedah ini segera membaca beberapa aksara ke dalam penimbal ( char array ), sehingga penimbal penuh atau sehingga sumber tidak mempunyai aksara lagi untuk dibaca."
Kaedah ini mengembalikan bilangan aksara yang sebenarnya dibaca (yang boleh kurang daripada panjang tatasusunan)
int read();
"Kaedah ini membaca satu aksara dan mengembalikannya. Hasilnya diluaskan kepada int untuk rupa. Jika tiada aksara yang tersedia, maka kaedah itu mengembalikan -1."
boolean ready();
Kaedah ini kembali benar jika terdapat sebarang aksara yang belum dibaca untuk kaedah baca
void close();
Kaedah ini «menutup» aliran. Anda memanggil ini apabila anda selesai bekerja dengan strim.
Objek kemudian melakukan operasi pengemasan yang diperlukan untuk menutup fail, dsb.
Pada ketika ini, anda tidak boleh membaca data lagi daripada strim.

"Ternyata kaedah Reader's read(char [] cbuf) membolehkan kami membaca keseluruhan blok aksara, bukannya satu aksara pada satu masa. Jadi ia lebih pantas dan lebih mudah."

"Tepat sekali. Dan sekarang mari kita lihat kaedah yang Penulis ada:"

Kaedah Apakah kaedah yang dilakukan
void write(int c);
Kaedah ini menulis satu aksara. Jenis int dikecilkan kepada aksara. Bahagian tambahan dibuang begitu sahaja.
void write(char[] cbuff);
Kaedah ini menulis pelbagai aksara.
void write(String s);
Kaedah ini menulis rentetan. Ia hanya ditukar kepada pelbagai aksara dan kemudian kaedah kedua dipanggil.
void flush();
Jika strim menyimpan secara dalaman mana-mana data yang belum ditulis, kaedah ini memaksanya untuk ditulis.
void close();
Kaedah ini «menutup» aliran. Anda memanggil ini apabila anda selesai bekerja dengan strim.
Objek kemudian melakukan operasi pengemasan yang diperlukan untuk menutup fail, dsb. Anda tidak boleh menulis data ke strim lagi dan siram dipanggil secara automatik.

Adalah penting untuk memahami bahawa Pembaca dan Penulis adalah kelas abstrak. Mereka tidak melakukan apa-apa dan mengandungi hampir tiada kod. Semua kaedah mereka perlu dilaksanakan dalam kelas yang mewarisinya. Tugas mereka adalah untuk menyeragamkan cara kelas berinteraksi . Pembangun tidak perlu mencipta piawaian mereka sendiri untuk berinteraksi antara satu sama lain. Adalah lebih mudah untuk semua orang mengekalkan beberapa piawaian asas. Ini membolehkan kelas yang ditulis oleh pengaturcara berbeza dengan mudah berinteraksi bukan sahaja dengan kelas yang ditulis oleh pencipta Java, tetapi juga dengan kelas yang ditulis oleh pengaturcara lain.

Piawaian adalah berkuasa.

"Saya setuju. Menyokong piawaian biasa memberi manfaat kepada semua orang."