Pengertian dan contoh Java Adapter Pattern

 



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



Pengertian dan contoh Java Adapter Pattern 4.5 5 Ardyn Sulaeman Adapter Pattern digunakan untuk mengkonversi interface dari sebuah class ke interface class yang diinginkan oleh client. Seperti adapte...


No comments:

Post a Comment

Powered by Blogger.