Java’da Adapter Sınıfları

sametklou

Java’da Adapter Sınıfları

Java programlama dilinde, Adapter sınıfları sıklıkla kullanılan ve oldukça önemli bir tasarım desenidir. Adapter sınıfları, farklı arayüzleri birbirine bağlamak veya uyumlu hale getirmek için kullanılır. Bu sayede bir sınıfın arayüzü başka bir sınıfın beklediği arayüze dönüştürülebilir.

Adapter Sınıfının Yapısı

Adapter sınıfı genellikle bir soyut sınıf veya arayüz olarak tanımlanır. Ardından bu soyut sınıf veya arayüzü implemente eden bir veya daha fazla sınıf oluşturulur. Bu sınıflar içinde adapte etmek istediğiniz sınıfın örneği olabilir.

public interface AdvancedMediaPlayer {
    public void playMP3(String fileName);
    public void playMP4(String fileName);
}

public class MP3Player implements AdvancedMediaPlayer {
    @Override
    public void playMP3(String fileName) {
        System.out.println("Playing MP3 file: " + fileName);
    }

    @Override
    public void playMP4(String fileName) {
        // Boş implementasyon
    }
}

public class MP4Player implements AdvancedMediaPlayer {
    @Override
    public void playMP3(String fileName) {
        // Boş implementasyon
    }

    @Override
    public void playMP4(String fileName) {
        System.out.println("Playing MP4 file: " + fileName);
    }
}

Adapter Sınıfının Kullanımı

Adapter sınıfı, adapte etmek istediğimiz sınıfı tutar ve ilgili arayüzü implemente eder. Bu sayede adaptör sınıfı, farklı arayüzlere sahip sınıfları bir araya getirebilir.

public class MediaAdapter implements MediaPlayer {
    AdvancedMediaPlayer advancedMediaPlayer;

    public MediaAdapter(String audioType){
        if(audioType.equalsIgnoreCase("MP4")){
            advancedMediaPlayer = new MP4Player();
        }
        else if(audioType.equalsIgnoreCase("MP3")){
            advancedMediaPlayer = new MP3Player();
        }
    }

    @Override
    public void play(String audioType, String fileName) {
        if(audioType.equalsIgnoreCase("MP4")){
            advancedMediaPlayer.playMP4(fileName);
        }
        else if(audioType.equalsIgnoreCase("MP3")){
            advancedMediaPlayer.playMP3(fileName);
        }
    }
}

Adapter Sınıfının Örnek Kullanımı

public class Main {
    public static void main(String[] args) {
        MediaPlayer mediaPlayer = new MediaAdapter("MP4");
        mediaPlayer.play("MP4", "video.mp4");

        mediaPlayer = new MediaAdapter("MP3");
        mediaPlayer.play("MP3", "audio.mp3");
    }
}

Yukarıdaki örnekte, MediaAdapter sınıfı farklı tipteki medya dosyalarını oynatmak için MediaPlayer arayüzünü implemente eder ve uygun metodları çağırarak adapte edilmiş sınıfları kullanır. Bu sayede MP3Player ve MP4Player sınıflarını uyumlu hale getirerek kullanabiliriz.

Java'da Adapter sınıfları, farklı sınıfları bir araya getirmek ve uyumlu hale getirmek için oldukça kullanışlı bir tasarım desenidir. Bu sayede programlarınızı daha esnek hale getirebilir ve farklı sınıflar arasındaki uyumsuzluğu gidererek kod tekrarını azaltabilirsiniz.