Definisi mode adaptor: Gunakan dua kelas yang tidak kompatibel bersama -sama, yang termasuk dalam mode struktural dan membutuhkan dua identitas: adapte (adaptor) dan adaptor (adaptor).
Mengapa menggunakan mode adaptor
Kami sering menemukan dua kelas yang tidak terkait yang perlu digabungkan bersama. Apa yang harus dilakukan?
Menggunakan adaptor, buat antarmuka hybrid (hybrid) antara kedua antarmuka ini.
Cara menggunakan mode adaptor
Untuk mengimplementasikan metode adaptor, telah disebutkan di bagian "Regenerasi Kelas" dari "Think in Java", ada dua cara: komposisi dan warisan.
Misalkan kita ingin mengendarai tumpukan, ada dua jenis: tumpukan persegi dan tumpukan melingkar.
Salinan kode adalah sebagai berikut:
Squarepeg kelas publik {
public void insert (string str) {
System.out.println ("Squarepeg Insert ():"+str);
}
}
Roundpeg kelas publik {
public void insertIntOhole (string msg) {
System.out.println ("RoundPeg InsertIntOhole ():"+MSG);
}
}
Sekarang ada aplikasi yang membutuhkan tumpukan persegi dan tumpukan melingkar. Maka kita perlu secara komprehensif menerapkan dua kelas yang tidak terkait ini.
Salinan kode adalah sebagai berikut:
Pegadapter kelas publik memperluas squarepeg {
Roundpeg Private Roundpeg;
Pegadapter publik (PEG RoundPeg) (this.roundpeg = PEG;)
public void insert (string str) {roundpeg.insertIntOhole (str);}
}
Dalam kode di atas, RoundPeg milik Adaptee dan merupakan adaptor. Pegadapter adalah adaptor, adaptasi adaptasi (adaptor Roundpeg) dan target (target squarepeg). Bahkan, ini adalah aplikasi komposisi komposisi dan metode warisan yang komprehensif.
Pegadapter pertama mewarisi squarepeg, kemudian menggunakan kombinasi baru untuk menghasilkan metode objek, menghasilkan objek RoundPeg dari RoundPeg, dan kemudian membebani metode penyisipan kelas induk (). Dari sini, Anda juga memahami perbedaan antara menggunakan baru untuk menghasilkan objek dan menggunakan Extends Warisan untuk menghasilkan objek.
Jika Anda memiliki beberapa pengalaman dalam penggunaan Java, Anda telah menemukan bahwa pola ini sering digunakan.
Penggunaan lebih lanjut
Pegadapter di atas mewarisi squarepeg.
Salinan kode adalah sebagai berikut:
antarmuka publik rioundpeg {
public void insertIntOhole (string msg);
}
antarmuka publik isquarepeg {
public void insert (string str);
}
Di bawah ini adalah Roundpeg dan Squarepeg baru.
Salinan kode adalah sebagai berikut:
Kelas publik Squarepeg mengimplementasikan Isquarepeg {
public void insert (string str) {
System.out.println ("Squarepeg Insert ():"+str);
}
}
Roundpeg kelas publik mengimplementasikan rioundpeg {
public void insertIntOhole (string msg) {
System.out.println ("RoundPeg InsertIntOhole ():"+MSG);
}
}
Berikut adalah Pegadapter baru yang disebut Adaptor Dua Jalan:
Salinan kode adalah sebagai berikut:
Pegadapter kelas publik mengimplementasikan rioundpeg, isquarepeg {
Roundpeg Private Roundpeg;
squarepeg squarepeg pribadi;
// Metode Bangun
Pegadapter publik (roundpeg PEG) {this.roundpeg = Peg;}
// Metode Bangun
Pegadapter publik (PEG Squarepeg) (this.squarepeg = PEG;)
public void insert (string str) {roundpeg.insertIntOhole (str);}
}
Ada juga jenis yang disebut adaptor pluggable, yang secara dinamis dapat memperoleh salah satu dari beberapa adaptor. Menggunakan teknologi refleksi, Anda dapat secara dinamis menemukan metode publik di kelas.