Mode Adaptor Java
Baru -baru ini, saya telah mempelajari dasar -dasar Java dan memiliki banyak keraguan ketika saya belajar adaptor. Saya mencari informasi secara online dan menemukan banyak informasi tentang adaptor, tetapi artikel ini bagus. Ini catatan, Anda dapat membaca apa yang Anda butuhkan.
Pola adaptor adalah untuk mengonversi antarmuka satu kelas menjadi antarmuka lain yang diharapkan klien, sehingga dua kelas yang antarmuka aslinya tidak cocok dan tidak dapat bekerja bersama dapat bekerja bersama. Secara fungsional, kelas yang tidak kompatibel dengan antarmuka ini umumnya memiliki fungsi yang sama atau serupa. Biasanya kami memecahkan jenis ketidakcocokan antarmuka ini dengan memodifikasi antarmuka kelas ini, tetapi jika kami tidak mau memodifikasi antarmuka asli untuk suatu aplikasi, atau kami tidak memiliki kode sumber objek sama sekali, mode adaptor akan berguna.
Keuntungan adaptor:
1. Decouple kelas target dan kelas adaptor
2. Tingkatkan transparansi dan reusabilitas kelas, merangkum implementasi spesifik di kelas adaptor, yang transparan ke kelas klien, dan meningkatkan penggunaan kembali adaptor.
3. baik fleksibilitas dan ekspansi sangat baik, dan mereka sesuai dengan prinsip pembukaan dan penutupan
Peran yang terlibat dalam adaptor termasuk yang berikut:
Target: Menentukan antarmuka spesifik yang digunakan oleh klien.
Klien: Gunakan antarmuka target untuk bekerja sama dengan objek yang konsisten dengan antarmuka target.
Adaptee: Antarmuka yang ada yang perlu diadaptasi.
Adaptor: Bertanggung jawab untuk mengonversi antarmuka Adaptee ke antarmuka Target. Adaptor adalah kelas konkret, yang merupakan inti dari pola ini.
Adaptor dibagi menjadi dua jenis: adaptor kelas dan adaptor objek, yang akan dijelaskan secara rinci di bawah ini.
Adaptor kelas
Adaptor kelas yang disebut mengacu pada adaptor adaptor yang mewarisi adaptor adaptor kami dan menerapkan target antarmuka target. Karena warisan tunggal di Java, adaptor ini hanya dapat melayani adaptor adaptor yang diwariskan. Kodenya adalah sebagai berikut:
Adaptee
paket com.bluemsun.classAdapter; orang kelas publik {private int id; nama string pribadi; / *** orang hanya dapat berbicara bahasa Inggris sekarang*/ public void wondenglish () {System.out.println ("Orang dapat mengatakan bahasa Inggris!"); } /*** menghilangkan setter, getter. */}Antarmuka target (target)
Paket com.bluemsun.classAdapter;/*** Target mengharuskan orang itu dapat berbicara bahasa Inggris, Prancis, dan Jepang. Tetapi sekarang orang hanya dapat berbicara bahasa Inggris * @Author Administrator * */Public Interface Target_Person {void wondEnglish (); void mengatakanfrench (); void mengatakanjapanese ();}Adaptor
package com.bluemsun.classadapter;/** * Class adapter, because it inherits Person, and Java can only inherit in single, so this adapter only serves the person class* This adapter allows the person class to implement the methods specified by the target interface without modifying the source code* @author Administrator * */public class Adapter_Person extends Person implements Target_Person{ @Override public void Saysfrench () {System.out.println ("Orang bisa mengatakan bahasa Prancis!"); } @Override public void mengatakanjapanese () {System.out.println ("Orang bisa mengatakan bahasa Jepang!"); }}Klien
paket com.bluemsun.classAdapter; tes kelas publik {public static void main (string [] args) {target_person person = new adapter_person (); orang.sayenglish (); orang.sayfrench (); orang.sayjapanese (); }}Beberapa kode sederhana di atas menunjukkan peran adaptor kelas. Seperti yang kami katakan di awal, adaptor adaptor ini hanya dapat melayani kelas orang tersebut. Pada saat ini, Anda mungkin bertanya -tanya, apakah saya perlu beradaptasi dengan banyak kelas, apakah saya perlu menulis adaptor untuk setiap kelas yang perlu beradaptasi? Apakah ada cara yang lebih fleksibel? Jawabannya adalah: Ya! Ini adalah adaptor objek yang kita bicarakan di bawah ini.
Adaptor objek
Adaptor objek yang disebut, sederhananya, berarti bahwa adaptor mengimplementasikan antarmuka target kami, tetapi tidak mewarisi kelas yang perlu diadaptasi. Sebaliknya, itu diadaptasi dengan melewati konstruktor adaptor. Kode adalah sebagai berikut: (target, adaptee sama seperti di atas)
Adaptor
package com.bluemsun.objectdapter;import com.bluemsun.classadapter.Person;import com.bluemsun.classadapter.Target_Person;/** * Object adapter, unlike class adapters, the object adapter can adapt multiple sources to the target* @author Administrator * */public class Adapter_Person implements Target_Person{ //Only implement the target interface private Person person; // Lewati orang kelas adapte di konstruktor publik adaptor_person (orang orang) {this.person = orang; } // Menerapkan sayenglish () di antarmuka target-call sayenglish () di adaptee @Override public void Sayenglish () {this.person.sayenglish (); } // Menerapkan metode lain di antarmuka @Override public void sayprench () {System.out.println ("Orang dapat mengatakan bahasa Prancis!"); } @Override public void mengatakanjapanese () {System.out.println ("Orang bisa mengatakan bahasa Jepang!"); }}Klien
Paket com.bluemsun.objectdapter; import com.bluemsun.classAdapter.person; import com.bluemsun.classadapter.target_person; tes kelas publik {public static void main (string [] args) {target_person person = adapter_person baru (new new ()); orang.sayenglish (); orang.sayfrench (); orang.sayjapanese (); }}Adaptor objek dapat beradaptasi dengan beberapa kelas dengan adaptasi. Lulus saja kelas yang berbeda dengan adaptasi pada konstruktor Adaptor. Fleksibilitas.
Keuntungan dari adaptor kelas:
1. Karena kelas adaptor adalah subclass dari kelas adaptor, beberapa metode adaptor dapat diganti di kelas adaptor, membuat adaptor lebih fleksibel.
Kekurangan adaptor kelas:
1. Untuk bahasa seperti Java dan C# yang tidak mendukung warisan berganda, paling banyak kelas adaptor dapat disesuaikan dengan setidaknya satu kelas adaptor pada satu waktu, dan kelas abstrak target hanya dapat berupa antarmuka, bukan kelas. Penggunaannya memiliki keterbatasan tertentu. Itu tidak dapat diadaptasi ke kelas adaptor dan subkelasnya ke antarmuka target secara bersamaan.
Keuntungan dari adaptor objek:
1. Mengadaptasi beberapa adaptor yang berbeda dengan target yang sama, yaitu adaptor yang sama dapat mengadaptasi kelas adaptor dan subkelasnya ke antarmuka target.
Kekurangan adaptor objek:
1. Dibandingkan dengan mode adaptor kelas, tidak mudah untuk mengganti kelas adaptor.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!