Adapter Pattern digunakan untuk mengkonversi interface dari sebuah class ke interface class yang diinginkan oleh client. Seperti adapter di dunia nyata. Adapter Pattern ini seperti jembatan antara dua objek yang berbeda namun masih dalam tipe yang sama. Adapter Pattern termasuk ke dalam Structural Pattern.
Implementasi
Dibawah ini adalah salah satu contoh implements dari Adapter pattern dimana dalam program ini kita akan membuat sebuah program Media Player yang bisa memutar berbagai format suara ataupun video. Diantara format yang didukung adalah mp3, vlc dan mp4. Dengan Adapter, program ini bisa memutar berbagai file audio dan video walau berbeda format.
1. Buat interface MediaPlayer.java
package main; public interface MediaPlayer { public void play(String audioType, String fileName); }
2. Buat interface AdvanceMediaPlayer.java
package main; public interface AdvanceMediaPlayer { public void playVlc(String fileName); public void playMp4(String fileName); }
3. Buat class VlcPlayer.java
package main; public class VlcPlayer implements AdvanceMediaPlayer { @Override public void playVlc(String fileName) { System.out.println("Playing vlc. Nama file : "+fileName); } @Override public void playMp4(String fileName) { // biarkan kosong } }
4. Buat class Mp4Player.java
package main; public class Mp4Player implements AdvanceMediaPlayer{ @Override public void playVlc(String fileName) { // biarkan kosong } @Override public void playMp4(String fileName) { System.out.println("Playing MP4. Nama file : "+fileName); } }
5. Buat class MediaAdapter.java
package main; public class MediaAdapter implements MediaPlayer{ AdvanceMediaPlayer advanceMusicPlayer; public MediaAdapter(String audioType){ if(audioType.equalsIgnoreCase("vlc")){ advanceMusicPlayer = new VlcPlayer(); }else if(audioType.equalsIgnoreCase("mp4")){ advanceMusicPlayer = new Mp4Player(); } } @Override public void play(String audioType, String fileName) { if(audioType.equalsIgnoreCase("vlc")){ advanceMusicPlayer.playVlc(fileName); }else if(audioType.equalsIgnoreCase("mp4")){ advanceMusicPlayer.playMp4(fileName); } } }
6. Buat class AudioPlayer.java
package main; public class AudioPlayer implements MediaPlayer { MediaPlayer mediaPlayer; @Override public void play(String audioType, String fileName) { //inbuilt support to play mp3 music files if(audioType.equalsIgnoreCase("mp3")){ System.out.println("playing mp3. Nama file : "+fileName); } //mediaAdapter is providing support to play other file formats else if(audioType.equalsIgnoreCase("vlc") || audioType.equalsIgnoreCase("mp4")){ MediaAdapter ma = new MediaAdapter(audioType); ma.play(audioType, fileName); } else{ System.out.println("invalid media, format "+audioType+" tidak di support"); } } }
7. Buat class Demo.java
package main; public class Demo { public static void main(String[] args){ AudioPlayer ap = new AudioPlayer(); ap.play("mp3", "SAMSONS kenangan terindah.mp3"); ap.play("mp4", "ADISTA Buku harian.mp4"); ap.play("vlc", "ALAN WALKER Alone.vlc"); ap.play("avi", "Despacito.avi"); } }
8. Verifikasi Output
playing mp3. Nama file : SAMSONS kenangan terindah.mp3 Playing MP4. Nama file : ADISTA Buku harian.mp4 Playing vlc. Nama file : ALAN WALKER Alone.vlc invalid media, format avi tidak di support
Baca Juga :
Java Bridge Pattern
Entri Sebelumnya :
Java Singleton Pattern
No comments:
Post a Comment