Встречается на собеседованиях • сегодня

Приведи пример шаблона проектирования Adapter

Шаблон Adapter позволяет объектам с несовместимыми интерфейсами работать вместе. Он оборачивает один интерфейс в другой, делая их совместимыми.

Пример:

java
// Целевой интерфейс (ожидаемый клиентом)
interface MediaPlayer {
    void play(String audioType, String fileName);
}

// Адаптируемый класс (несовместимый интерфейс)
class AdvancedMediaPlayer {
    void playVlc(String fileName) {
        System.out.println("Playing vlc file: " + fileName);
    }
    void playMp4(String fileName) {
        System.out.println("Playing mp4 file: " + fileName);
    }
}

// Адаптер
class MediaAdapter implements MediaPlayer {
private AdvancedMediaPlayer advancedPlayer;

text
public MediaAdapter(String audioType) {
    if(audioType.equalsIgnoreCase("vlc")) {
        advancedPlayer = new AdvancedMediaPlayer();
    }
}

@Override
public void play(String audioType, String fileName) {
    if(audioType.equalsIgnoreCase("vlc")) {
        advancedPlayer.playVlc(fileName);
    }
}

}

// Клиентский код
class AudioPlayer implements MediaPlayer {
private MediaAdapter mediaAdapter;

text
@Override
public void play(String audioType, String fileName) {
    if(audioType.equalsIgnoreCase("mp3")) {
        System.out.println("Playing mp3 file: " + fileName);
    } else if(audioType.equalsIgnoreCase("vlc")) {
        mediaAdapter = new MediaAdapter(audioType);
        mediaAdapter.play(audioType, fileName);
    }
}

}

text
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы