Sobes.tech
Junior — Middle

Proqram mühəndisliyində adapter nümunəsinin necə tətbiq olunduğuna nümunə göstərə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Adapter nümunəsi, uyğun olmayan interfeysə malik obyektlərin birlikdə işləməsinə imkan verir, bir sinfin interfeysini müştərinin gözlədiyi interfeysə çevirməklə.

Java nümunəsində: MediaPlayer interfeysi və play(String audioType, String fileName) metodu ilə, və AdvancedMediaPlayer sinfi və playVlc(String fileName)playMp4(String fileName) metodları ilə, AdvancedMediaPlayerMediaPlayer vasitəsilə istifadə etmək üçün adapter yaradırıq:

// Hədəf interfeysi
interface MediaPlayer {
    void play(String audioType, String fileName);
}

// Mövcud interfeys
interface AdvancedMediaPlayer {
    void playVlc(String fileName);
    void playMp4(String fileName);
}

// Konkret tətbiqlər
class VlcPlayer implements AdvancedMediaPlayer {
    public void playVlc(String fileName) {
        System.out.println("VLC faylı oynadılır: " + fileName);
    }
    public void playMp4(String fileName) { }
}

class Mp4Player implements AdvancedMediaPlayer {
    public void playVlc(String fileName) { }
    public void playMp4(String fileName) {
        System.out.println("MP4 faylı oynadılır: " + fileName);
    }
}

// Adapter
class MediaAdapter implements MediaPlayer {
    AdvancedMediaPlayer advancedMusicPlayer;

    public MediaAdapter(String audioType) {
        if(audioType.equalsIgnoreCase("vlc")) {
            advancedMusicPlayer = new VlcPlayer();
        } else if(audioType.equalsIgnoreCase("mp4")) {
            advancedMusicPlayer = new Mp4Player();
        }
    }

    public void play(String audioType, String fileName) {
        if(audioType.equalsIgnoreCase("vlc")) {
            advancedMusicPlayer.playVlc(fileName);
        } else if(audioType.equalsIgnoreCase("mp4")) {
            advancedMusicPlayer.playMp4(fileName);
        }
    }
}

// Müştəri
class AudioPlayer implements MediaPlayer {
    MediaAdapter mediaAdapter;

    public void play(String audioType, String fileName) {
        if(audioType.equalsIgnoreCase("mp3")) {
            System.out.println("mp3 faylı oynadılır: " + fileName);
        } else if(audioType.equalsIgnoreCase("vlc") || audioType.equalsIgnoreCase("mp4")) {
            mediaAdapter = new MediaAdapter(audioType);
            mediaAdapter.play(audioType, fileName);
        } else {
            System.out.println("Yanlış media tipi: " + audioType);
        }
    }
}

Beləliklə, AudioPlayer MediaAdapter-dən istifadə edir, dəstəkləmədiyi formatları oynatmaq üçün, interfeys uyğunluğunu təmin edir.