Rumah  >  Artikel  >  Java  >  Penggunaan indah corak penyesuai dalam corak reka bentuk Java

Penggunaan indah corak penyesuai dalam corak reka bentuk Java

王林
王林asal
2024-05-09 12:54:01890semak imbas

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.

Penggunaan indah corak penyesuai dalam corak reka bentuk Java 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.

  • Penyesuai Objek
  • Penyesuai objek ialah cara mudah untuk melaksanakan corak Penyesuai. Ia mencipta objek penyesuai baharu yang mengandungi objek Adaptee dan melaksanakan antara muka Sasaran.
    // 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();
        }
    }
  • Kes praktikal
  • Andaikan kita mempunyai dua kelas:
  • MediaPlayer
dan

AdvancedMediaPlayer. Kelas MediaPlayer

bertanggungjawab untuk memainkan media dalam format biasa (seperti MP3), manakala kelas

AdvancedMediaPlayer

bertanggungjawab untuk memainkan media dalam format lanjutan (seperti VLC). Kami akan menggunakan corak Penyesuai untuk membolehkan kelas

MediaPlayer 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.vlc
Dengan 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn