Sebenarnya, semua orang mesti biasa dengan perkataan penyesuai Kami tahu bahawa iPhone Apple tidak lagi menyediakan palam pengecasan dalam kotak, jadi kami tidak boleh menggunakan kabel data ini sahaja mengecas pada papan pemalam 220V, jadi kita perlu membeli penyesuai baharu untuk menyambungkan papan pemalam dan telefon mudah alih Ini ialah penyesuai.
Malah, mungkin juga berlaku dalam reka bentuk perisian bahawa komponen dengan fungsi perniagaan tertentu yang perlu dibangunkan sudah wujud dalam perpustakaan komponen sedia ada, tetapi ia tidak serasi dengan spesifikasi antara muka sistem semasa ini dibangunkan semula Kos komponen adalah sangat tinggi, jadi mod penyesuai boleh menyelesaikan masalah ini dengan baik.
Corak penyesuai: Tukar antara muka kelas kepada antara muka lain yang dikehendaki pelanggan, supaya kelas yang tidak boleh berfungsi bersama kerana antara muka yang tidak serasi boleh berfungsi bersama. .
Corak penyesuai terbahagi 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 terdapat sedikit aplikasi.
Kebaikan:
Pelanggan boleh memanggil antara muka sasaran secara telus melalui penyesuai
Menggunakan semula kelas sedia ada Pengaturcara tidak perlu mengubah suai kod asal dan menggunakan semula kelas penyesuai sedia ada
Nyahselesaikan kelas sasaran dan kelas penyesuai. antara muka yang tidak konsisten antara kelas sasaran dan kelas penyesuai
Mematuhi prinsip buka-tutup dalam banyak senario perniagaan
Kelemahan:
Proses penulisan penyesuai perlu dipertimbangkan secara menyeluruh bersama-sama dengan senario perniagaan, yang mungkin meningkatkan kerumitan sistem
Meningkatkan kesukaran membaca kod dan mengurangkan kebolehbacaan jantina kod, penggunaan penyesuai yang berlebihan akan menjadikan kod sistem tidak kemas
(Struktur berikut dirujuk daripada Internet)
Struktur corak:
Antara muka sasaran: Antara muka yang dijangkakan oleh perniagaan sistem semasa, ia boleh menjadi kelas abstrak atau antara muka
Kelas Adaptee: Ia ialah antara muka komponen dalam pustaka komponen sedia ada yang diakses dan disesuaikan
Kelas penyesuai: Ia adalah penukar, melalui pewarisan Atau rujuk kepada objek penyesuai, tukar antara muka penyesuai kepada antara muka sasaran dan benarkan pelanggan mengakses penyesuai dalam format antara muka sasaran
Struktur corak penyesuai kelas :
Struktur corak penyesuai objek:
Kami kini mempunyai palam komputer riba tiga fasa, tetapi kami kini perlu menggunakan palam dua fasa untuk mengecas, jadi kami perlu memasang penyesuai dua fasa pada palam ini:
Antara muka soket tiga fasa:
Soket dua fasa standard kebangsaan:/** * 三相插座接口 */ public interface ThreePlugIf { //使用三相电流供电 public void powerWithThree(); }Komputer riba :
/** * 国标的二相插座 */ public class GBTowPlug { public void powerWithTwo(){ System.out.println("使用二相电流供电"); } }Penyesuai soket tiga fasa kepada dua fasa:
/** * 笔记本 */ public class NoteBook { private ThreePlugIf plug; public NoteBook(ThreePlugIf plug){ this.plug = plug; } //使用插座充电 public void charge(){ plug.powerWithThree(); } }Kategori ujian:
/** * 三相转二相的插座适配器 */ public class TwoPlugAdapter implements ThreePlugIf { private GBTowPlug plug; public TwoPlugAdapter(GBTowPlug plug) { this.plug = plug; } @Override public void powerWithThree() { System.out.println("通过转换"); plug.powerWithTwo(); } }Hasil output:
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); } }
Dengan penukaran
Menggunakan bekalan kuasa arus dua fasaPenyesuai yang menggunakan kaedah gabungan dipanggil penyesuai objek
Ciri-ciri:
"Penyesuai" digabungkan sebagai objek Pergi ke kelas penyesuai dan bungkus antara muka sasaran yang diubah suai ke penyesuai
B. Gunakan warisan untuk melaksanakan penyesuai:
Warisi penyesuai:
Kelas ujian:/** * 采用继承方式的插座适配器 */ public class TwoPlugAdapterExtends extends GBTowPlug implements ThreePlugIf{ @Override public void powerWithThree() { System.out.println("借助继承适配器"); this.powerWithTwo(); } }Output:
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); //使用继承方法 three = new TwoPlugAdapterExtends(); nb = new NoteBook(three); nb.charge(); } }Dengan menukar
Dikuasakan dengan arus dua fasaGunakan bekalan kuasa arus dua fasa
Dengan bantuan penyesuai warisanKaedah pewarisan dipanggil penyesuai kelas
Ciri-ciri:
Pewarisan berbilang antara muka yang tidak serasi membolehkan pemadanan antara muka sasaran , merealisasikan penyesuaian untuk satu kelas
6 Senario aplikasi corak penyesuai
Atas ialah kandungan terperinci Bagaimana untuk memahami dan menggunakan corak penyesuai Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!