Latest web development tutorials

Model adapter

Modus Adapter (Adapter Pattern) sebagai jembatan antara dua antarmuka yang tidak kompatibel. Jenis pola desain milik model struktural, yang menggabungkan fitur dari dua interface yang terpisah.

Model ini melibatkan satu kelas yang bertanggung jawab untuk fungsi antarmuka tidak kompatibel independen atau bergabung. Misalnya kehidupan nyata, sebagai pembaca kartu memori adalah adaptor dan laptop antara. kartu memori Anda ke pembaca, maka pembaca ke dalam notebook, sehingga kartu memori dapat dibaca melalui notebook.

Kami menunjukkan penggunaan mode adaptor dengan contoh-contoh berikut. Dimana perangkat audio player hanya bisa memutar file mp3 untuk bermain vlc dan mp4 file dengan menggunakan pemutar audio yang lebih maju.

pengenalan

Maksud: untuk mengubah antarmuka dari kelas ke antarmuka lain klien harapkan.Pola Adapter membuat kelas-kelas lain karena interface yang tidak kompatibel tidak dapat bekerja sama untuk bekerja sama.

Terutama untuk mengatasi: solusi utama dalam sistem perangkat lunak, sering dengan beberapa "objek yang ada" ke dalam lingkungan baru, persyaratan lingkungan baru dan antarmuka yang sekarang objek tidak dapat dipenuhi.

Kapan menggunakan: 1, sistem ini membutuhkan penggunaan kelas yang ada, dan interface tersebut tidak memenuhi kebutuhan sistem.2, ingin membuat kelas dapat digunakan kembali untuk, termasuk beberapa mungkin bekerja dengan beberapa kelas tidak banyak terkait dengan satu sama lain dalam pengenalan masa depan kelas, kelas-kelas ini tidak perlu harus antarmuka sumber yang sama. 3, melalui konverter antarmuka, kelas ke garis kelas lain. (Seperti harimau dan burung, sekarang lebih dari Tiger, tanpa meningkatkan entitas permintaan di bawah adaptor tambahan, di mana harimau benda inklusif, mengimplementasikan antarmuka fly.)

Cara memperbaiki: Mewarisi atau ketergantungan (dianjurkan).

Kode kunci: warisan adapter atau tergantung objek yang sudah ada untuk mencapai antarmuka target yang diinginkan.

contoh aplikasi: 1, Amerika Serikat Listrik 110V, Cina 220V, harus ada adaptor 110V ke 220V.2, JAVA JDK 1.1 menyediakan antarmuka Pencacahan dan menyediakan antarmuka Iterator di 1.2, Anda ingin menggunakan 1,2 JDK, sebelum sistem harus dikonversi ke Pencacahan antarmuka antarmuka Iterator, maka Anda perlu pola adaptor. 3, jalankan program di WINDOWS LINUX. 4, JAWA di jdbc.

Keuntungan: 1, dapat membuat segala jenis run bersama dua yang tidak terkait.2, meningkatkan penggunaan kembali kelas. 3, meningkatkan transparansi kelas. 4, fleksibilitas yang baik.

Kekurangan: 1, penggunaan berlebihan adaptor, membuat sistem yang sangat berantakan dan sulit untuk memahami keseluruhan.Misalnya, panggilan jelas terlihat A interface, pada kenyataannya, disesuaikan untuk mencapai antarmuka internal yang B telah menjadi sistem jika hal ini terjadi terlalu banyak, sama saja dengan bencana. Jadi jika tidak diperlukan, Anda tidak dapat menggunakan adaptor, tapi langsung ke sistem direkonstruksi. 2. Pada sebagian JAWA mewarisi kelas, sehingga pada adaptasi adaptasi terbaik dengan kelas, dan harus menargetkan kelas adalah kelas abstrak.

Penggunaan skenario: Ada motivasi untuk memodifikasi operasi normal antarmuka dari sistem, maka Anda harus mempertimbangkan menggunakan modus adaptor.

Catatan: Adaptor tidak ditambahkan ketika desain rinci, tapi untuk memecahkan masalah dalam proyek pelayanan.

realisasi

Kami memiliki antarmukaMediaPlayer,dan realisasi dari entitas kelas antarmukaAudioPlayerMediaPlayer. Secaradefault,AudioPlayer dapat memutar mp3 format file audio.

Kami juga memilikiAdvancedMediaPlayerantarmuka lain dan kelas entitas diimplementasikanAdvancedMediaPlayerantarmuka. Kelas ini dapat memainkan vlc file dan format mp4.

Kami ingin membuatAudioPlayermemutar file audio ke format lain. Untuk mencapai hal ini, kita perlu membuat kelas adapter mengimplementasikanMediaAdapterMediaPlayer antarmuka dan menggunakanAdvancedMediaPlayerobjek untuk memainkan format yang diinginkan.

AudioPlayermenggunakan kelas adapterMediaAdaptermentransfer jenis audio yang diinginkan, tidak perlu tahu format dari kelas yang sebenarnya bisa bermain kebutuhan audio.AdapterPatternDemo,kelas demonstrasi kami menggunakan kelasAudioPlayermemainkan berbagai format.

Pola Adapter diagram UML

Langkah 1

Pemain dan media player yang lebih maju untuk menciptakan sebuah antarmuka untuk media.

MediaPlayer.java

antarmuka publik MediaPlayer {
   public void bermain (String audioType, String fileName);
}

AdvancedMediaPlayer.java

antarmuka publik AdvancedMediaPlayer {	
   public void playVlc (String fileName);
   public void playMp4 (String fileName);
}

Langkah 2

Membuat kelas entitas menyadariAdvancedMediaPlayerantarmuka.

VlcPlayer.java

public class VlcPlayer mengimplementasikan AdvancedMediaPlayer {
   @ Override
   public void playVlc (String fileName) {
      System.out.println ( "Bermain berkas vlc Nama :." + FileName);		
   }

   @ Override
   public void playMp4 (String fileName) {
      // Apakah tidak ada}
}

Mp4Player.java

public class mp4player mengimplementasikan AdvancedMediaPlayer {

   @ Override
   public void playVlc (String fileName) {
      // Apakah tidak ada}

   @ Override
   public void playMp4 (String fileName) {
      System.out.println ( "Bermain file mp4 Nama :." + FileName);		
   }
}

Langkah 3

Buat kelasMediaPlayermengimplementasikan adaptor antarmuka.

MediaAdapter.java

public class MediaAdapter mengimplementasikan MediaPlayer {

   AdvancedMediaPlayer advancedMusicPlayer;

   publik MediaAdapter (String audioType) {
      jika (audioType.equalsIgnoreCase ( "vlc")) {
         advancedMusicPlayer = baru VlcPlayer ();			
      } Lain jika (audioType.equalsIgnoreCase ( "mp4")) {
         advancedMusicPlayer = baru mp4player ();
      }	
   }

   @ Override
   public void bermain (String audioType, String fileName) {
      jika (audioType.equalsIgnoreCase ( "vlc")) {
         advancedMusicPlayer.playVlc (fileName);
      } Lain jika (audioType.equalsIgnoreCase ( "mp4")) {
         advancedMusicPlayer.playMp4 (fileName);
      }
   }
}

Langkah 4

Membuat kelas entitas menyadariMediaPlayerantarmuka.

AudioPlayer.java

public class AudioPlayer mengimplementasikan MediaPlayer {
   MediaAdapter mediaAdapter; 

   @ Override
   public void bermain (String audioType, String fileName) {		

      // Putar file musik mp3, built-in dukungan jika (audioType.equalsIgnoreCase ( "mp3")) {
         System.out.println ( "Bermain file mp3 Name :." + FileName);			
      } 
      // MediaAdapter memberikan memutar format file lain yang didukung lain jika (audioType.equalsIgnoreCase ( "vlc") 
         || AudioType.equalsIgnoreCase ( "mp4")) {
         mediaAdapter = baru MediaAdapter (audioType);
         mediaAdapter.play (audioType, fileName);
      }
      else {
         System.out.println ( "Media tidak valid." +
            audioType + "format tidak didukung");
      }
   }   
}

Langkah 5

AudioPlayer gunakan untuk memainkan berbagai jenis format audio.

AdapterPatternDemo.java

public class AdapterPatternDemo {
   public static void main (String [] args) {
      AudioPlayer AudioPlayer = baru AudioPlayer ();

      audioPlayer.play ( "mp3", "luar horizon.mp3");
      audioPlayer.play ( "mp4", "alone.mp4");
      audioPlayer.play ( "vlc", "jauh jauh away.vlc");
      audioPlayer.play ( "avi", "pikiran me.avi");
   }
}

Langkah 6

Verifikasi output.

Bermain file mp3 Name :. luar horizon.mp3 yang
Bermain file mp4 Nama :. Alone.mp4
Memainkan file vlc Nama :. Jauh jauh away.vlc
Format Avi media yang tidak valid. tidak didukung