Corak Penyesuai ialah corak reka bentuk struktur yang membolehkan objek yang tidak serasi berfungsi bersama-sama Ia menukar satu antara muka kepada yang lain supaya objek boleh berinteraksi dengan lancar. Penyesuai objek melaksanakan corak penyesuai dengan mencipta objek penyesuai yang mengandungi objek yang disesuaikan dan melaksanakan antara muka sasaran. Dalam kes praktikal, melalui mod penyesuai, pelanggan (seperti MediaPlayer) boleh memainkan media dalam format lanjutan (seperti VLC), walaupun ia sendiri hanya menyokong format media biasa (seperti MP3). . Dalam erti kata lain, ia menukar satu antara muka kepada yang lain, membenarkan dua objek yang tidak serasi berinteraksi dengan lancar.
Struktur
Struktur corak penyesuai adalah seperti yang ditunjukkan di bawah:
+--------------------+ | Target | +--------------------+ ^ | +--------------------+ | Adaptee(被适配) | +--------------------+ ^ | +----------------------------+ | Object Adapter (对象适配器) | +----------------------------+ | | \_______________/
Sasaran (sasaran): Tentukan antara muka yang diperlukan oleh pelanggan.
Adaptee (disesuaikan): Tentukan antara muka yang hendak disesuaikan.
Adapter: Menukar antara muka Adaptee kepada antara muka Sasaran supaya pelanggan boleh menggunakan Adaptee.
// Target 接口 interface Target { int operation(); } // Adaptee 接口 interface Adaptee { int specificOperation(); } // Adapter (对象适配器) class Adapter implements Target { private final Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public int operation() { return adaptee.specificOperation(); } }
AdvancedMediaPlayer. Kelas MediaPlayer
bertanggungjawab untuk memainkan media dalam format biasa (seperti MP3), manakala kelasAdvancedMediaPlayer
bertanggungjawab untuk memainkan media dalam format lanjutan (seperti VLC). Kami akan menggunakan corak Penyesuai untuk membolehkan kelasMediaPlayer memainkan media format lanjutan.
class MediaPlayer { public void playMP3(String filename) { System.out.println("Playing MP3: " + filename); } } class AdvancedMediaPlayer { public void playVLC(String filename) { System.out.println("Playing VLC: " + filename); } } class MediaAdapter implements MediaPlayer { private final AdvancedMediaPlayer advancedMediaPlayer; public MediaAdapter(AdvancedMediaPlayer advancedMediaPlayer) { this.advancedMediaPlayer = advancedMediaPlayer; } @Override public void playMP3(String filename) { advancedMediaPlayer.playVLC(filename); } } // 客户调用 MediaPlayer audioPlayer = new MediaAdapter(new AdvancedMediaPlayer()); audioPlayer.playMP3("FileName.vlc");Output:
Playing VLC: FileName.vlcDengan menggunakan corak penyesuai, kami memperluaskan fungsi kelas MediaPlayer untuk dapat memainkan media format lanjutan tanpa mengubah suai kod sumbernya.
Atas ialah kandungan terperinci Penggunaan indah corak penyesuai dalam corak reka bentuk Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!