【teks】
Kita tahu bahwa kontrol UI yang paling penting dan paling sulit di Android adalah kontrol daftar ListView. Jika Anda ingin menggunakannya secara fleksibel, Anda harus menggunakan adaptor adaptor. Oleh karena itu, saya pikir masih perlu untuk mempelajari mode adaptor di Java (terlepas dari apakah itu dapat digunakan di masa depan). Bagaimanapun, bahasa Java adalah fondasi yang sangat penting untuk pengembangan Android.
Untuk sepenuhnya memahami mode adaptor, ada banyak pengetahuan untuk dipelajari, misalnya: mode adaptor memiliki dua bentuk yang berbeda: mode adaptor kelas dan mode adaptor objek. Tetapi sebagai seorang pemula, saya hanya akan mempelajari pengetahuan pengantar mode orkestrasi, dan saya akan terus memperbaikinya di masa depan. Saya berharap sepatu anak -anak yang berjuang di jalan menuju pengkodean tidak mengeluh → _ →
1. Pendahuluan Adaptor
• Konversi antarmuka satu kelas ke antarmuka lain yang diinginkan pelanggan. Mode adaptor memungkinkan kelas yang awalnya tidak dapat bekerja bersama karena ketidakcocokan antarmuka untuk bekerja bersama.
• Mode adaptor sangat umum digunakan dalam kerangka Java modern. Pola ini cocok untuk skenario berikut: Anda ingin menggunakan kelas yang ada, tetapi kelas tidak memenuhi persyaratan antarmuka; Atau Anda perlu membuat kelas yang dapat digunakan kembali yang beradaptasi dengan kelas lain yang tidak menyediakan antarmuka yang sesuai.
2. Contoh apel dan jeruk
Gagasan adaptor dapat diilustrasikan dengan contoh sederhana berikut. Contoh ini adalah membuat oranye "beradaptasi" menjadi apel. Seperti yang ditunjukkan pada gambar di bawah ini:
Seperti yang dapat Anda lihat di bagian bawah gambar di atas, adaptor berisi instance oranye dan mewarisi kelas apel. Objek oranye ditempatkan di adaptor, sehingga oranye bertindak seperti apel. Diagram logika yang sesuai adalah sebagai berikut:
3. Contoh colokan kotak soket
Pada gambar di atas, kita dapat berhasil menghubungkan steker di soket kiri melalui adaptor tengah.
4. Kode Implementasi Adaptor Steker
/** Mode Adaptor (Adaptor): Mengubah antarmuka satu kelas menjadi antarmuka lain yang diinginkan pelanggan. Mode adaptor memungkinkan kelas yang awalnya tidak dapat bekerja bersama karena ketidakcocokan antarmuka untuk bekerja bersama. */class adapterdemo {public static void main (string [] args) {// power a mulai bekerja powera powera = new poweraimpl (); mulai (powa); PowerB PowerB = PowerBImpl baru (); PowaAdapter pa = poweraAdapter baru (powerb); Mulai (PA); } // Metode Definisi: Powa bekerja statis public static start (powerA powa) {system.out.println (".... beberapa kode duplikat ......"); powera.insert (); System.out.println ("... beberapa kode duplikat .../n"); } /** public static void start (powerb powerb) {system.out.println ("... beberapa kode duplikat ......"); powerb.connect (); System.out.println ("... beberapa kode duplikat ......"); } */} // Tentukan kelas adaptor kelas poweraAdapter mengimplementasikan powera {private powerb powerb; // antarmuka untuk mengadaptasi poweraAdapter publik (powerb powerb) {this.powerb = powerb; } // Menerapkan antarmuka PowerA, Anda harus mengimplementasikan metode dalam powerA public void insert () {powerB.connect (); }}/** Power A antarmuka*/antarmuka powera {public void insert ();} kelas powerAmpl mengimplementasikan powera {public void insert () {System.out.println ("Power A Interface dimasukkan, mulai berfungsi"); }}/** Power B Interface*/Interface PowerB {public void connect ();} kelas PowerBImpl mengimplementasikan PowerB {public void connect () {System.out.println ("Antarmuka Power B terhubung, mulai berfungsi"); }} Dalam contoh ini, kami ingin Powerb memanggil kode dalam metode start () di powa; Tentu saja, kami tidak ingin mengulangi 23 atau 25 baris kode yang dikomentari. Saat ini, Anda dapat menggunakan mode adaptor.
Penjelasan Kode di atas:
Baris 30: Mulai mendefinisikan adaptor, yang juga merupakan awal dari kode inti;
Baris 33 dan 34: Lewati PowerB masuk melalui metode konstruksi;
Kode Baris 37: Karena itu adalah untuk mengimplementasikan antarmuka PowerA, perlu untuk mengimplementasikan metode insert () di powerA;
Kode Baris 38: Kami memanggil metode PowerB's Connect () dalam metode PowerA's Insert ();
Segera setelah itu, 10, dan 12 baris kode berarti: Ketika baru A powerb, kami meneruskannya ke adaptor powerAAdapter, memulai adaptor, dan kemudian Powerb akan menjalankan kode pada baris 16, 24, dan 18.
Catatan: Urutan 16, 24, dan 18 tidak salah, karena di adaptor, kami telah mengganti 24 baris kode dengan baris 17.
Efek operasi adalah sebagai berikut:
Demikian pula, jika saya juga ingin menggunakan PowerA sebagai PowerB, saya dapat mendefinisikan adaptor lain PowerbadaPter untuk mengimplementasikan adaptor dua arah.
5. Ringkasan
Kode yang dikomentari dalam baris 23 dan 25 di atas menunjukkan bahwa itu adalah banyak kode duplikat dan tidak sesuai dengan pemikiran yang berorientasi objek. Kami sekarang membayangkan contoh proyek kami online dan pelanggan menggunakannya, tetapi kemudian beberapa permintaan baru telah ditambahkan. Ada prinsip OO untuk objek yang berorientasi objek: tutup modifikasi (setelah online, cobalah untuk tidak memodifikasi kode, jika tidak, reaksi berantai dapat terjadi, mengakibatkan masalah dengan kode lain yang memanggil metode ini), dan terbuka untuk ekstensi (metode baru yang ditentukan oleh diri Anda sendiri, yang belum disebut orang lain, jadi tentu saja kita dapat memodifikasi mereka). Pada titik ini, kita dapat mengurangi kode duplikat ini melalui adaptor.
6. Prinsip Desain OO
• Pemrograman berorientasi antarmuka (pemrograman berorientasi abstrak)
• Perubahan paket
• Gunakan lebih banyak kombinasi, gunakan lebih sedikit warisan
• Dekat dengan modifikasi untuk membuka ke ekstensi
Secara pribadi, prinsip -prinsip desain ini perlu diperdalam secara terus -menerus dalam praktiknya, jadi saya tidak akan terlalu menggambarkannya di sini ~
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.