Corak penyesuai (Penyesuai) ditakrifkan seperti berikut: Tukar antara muka kelas kepada antara muka lain yang pelanggan? mahu, supaya Kelas asal yang tidak boleh berfungsi bersama kerana antara muka yang tidak serasi boleh berfungsi bersama. Corak penyesuai dibahagikan kepada dua jenis: corak struktur kelas dan corak struktur objek Yang pertama mempunyai tahap gandingan yang lebih tinggi antara kelas daripada yang kedua, dan memerlukan pengaturcara memahami struktur dalaman komponen yang berkaitan dalam perpustakaan komponen sedia ada, jadi ia. agak jarang digunakan.
1. Pelanggan boleh memanggil antara muka sasaran secara telus melalui penyesuai.
2. Kelas sedia ada digunakan semula Pengaturcara tidak perlu mengubah suai kod asal dan menggunakan semula kelas penyesuai sedia ada.
3. Asingkan kelas sasaran dan kelas penyesuai untuk menyelesaikan masalah antara muka yang tidak konsisten antara kelas sasaran dan kelas penyesuai.
4. Mematuhi prinsip pembukaan dan penutup dalam banyak senario perniagaan.
1. Proses penulisan penyesuai perlu dipertimbangkan sepenuhnya bersama-sama dengan senario perniagaan, yang mungkin meningkatkan kerumitan sistem.
2. Meningkatkan kesukaran membaca kod dan mengurangkan kebolehbacaan kod Penggunaan penyesuai yang berlebihan akan menjadikan kod sistem menjadi kucar-kacir.
Corak penyesuai kelas: Ia boleh dilaksanakan menggunakan warisan berbilang, seperti C++ Kelas penyesuai boleh ditakrifkan untuk mewarisi kedua-dua antara muka perniagaan sistem semasa dan komponen yang sudah wujud dalam pustaka komponen sedia ada; Java tidak menyokong warisan berbilang, tetapi anda boleh menentukan kelas penyesuai untuk melaksanakan antara muka perniagaan sistem semasa sambil mewarisi komponen yang telah wujud dalam pustaka komponen sedia ada.
Mod penyesuai objek: Anda boleh memperkenalkan komponen yang telah dilaksanakan dalam pustaka komponen sedia ada ke dalam kelas penyesuai, yang turut melaksanakan antara muka perniagaan sistem semasa. Sekarang mari kita perkenalkan struktur asas mereka.
Kes: Hongmao menggunakan kristal api untuk mengaktifkan Fire Dance Whirlwind Sword Qi
Antara muka sasaran: Changhong Sword Qi
Jenis penyesuaian: Fire Dance Whirlwind Sword Qi
Jenis penyesuai: Fire Crystal
Hongmao hanya boleh mengaktifkan Changhong Sword Qi pada masa ini, tetapi dia mahu mengaktifkan api Wu Whirlwind Sword Qi
Boleh hanya menggunakan kuasa kristal api untuk mengubah Changhong Sword Qi menjadi Fire Wu Whirlwind Sword Qi
Nota: Saya sedang menyesuaikan Fire Wu Whirlwind Sword Qi kepada Changhong Jianqi
Mengisytiharkan antara muka Changhong Jianqi, termasuk kaedah abstrak untuk mengaktifkan Changhong Jianqi
public interface Chang { void chang(); }
Fire Dance Whirlwind Sword Qi kategori , mengisytiharkan kaedah untuk mengaktifkan Pedang Angin Puyuh Tarian Api Qi.
public class Huo { public void huo() { System.out.println("火舞旋风剑气"); } }
Kelas Fire Crystal mewarisi kelas Fire Dance Whirlwind Sword Qi (Tujuan: Selepas mewarisi, anda boleh menggunakan kaedah dalam kelas), dan melaksanakan Pedang Changhong Antara muka Qi. (Tujuan: Untuk merealisasikan kaedah untuk mengaktifkan Changhong Sword Qi). Antara kaedah untuk mengaktifkan Changhong Sword Qi, kaedah untuk mengaktifkan Fire Dance Whirlwind Sword Qi digunakan.
public class JingShi extends Huo implements Chang { @Override public void chang() { huo(); } }
public class Demo { public static void main(String[] args) { Chang haha = new JingShi(); haha.chang(); } }
Isytiharkan Changhong Jianqi Antara muka mengandungi kaedah abstrak untuk mengaktifkan Changhong Sword Qi
public interface Chang { void chang(); }
Fire Dance Whirlwind Sword Qi kelas, mengisytiharkan kaedah untuk mengaktifkan Fire Dance Whirlwind Sword Qi .
public class Huo { public void huo() { System.out.println("火舞旋风剑气"); } }
Kelas kristal api melaksanakan antara muka Changhong Sword Qi, mengisytiharkan atribut Fire Dance Whirlwind Sword Qi, dan melaksanakan kaedah untuk mengaktifkan Changhong Sword Qi . Kaedah mengaktifkan Pedang Angin Puyuh Tarian Api Qi termasuk dalam kaedah mengaktifkan Pedang Qi Changhong.
public class JingShi implements Chang { private Huo huo; JingShi() { } JingShi(Huo huo) { this.huo = huo; } @Override public void chang() { huo.huo(); } }
Baharu objek Fire Dance Whirlwind Sword Qi, objek Batu Kristal Api baharu dan hantar objek Fire Dance Whirlwind Sword Qi ke dalam objek Batu Kristal Api.
public class Demo { public static void main(String[] args) { Huo huo = new Huo(); Chang haha = new JingShi(huo); haha.chang(); } }
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan corak penyesuai corak reka bentuk Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!