Ответ
Паттерн Адаптер позволяет объектам с несовместимыми интерфейсами работать вместе. Он оборачивает один интерфейс в другой, преобразуя вызовы.
Пример:
// Интерфейс, который ожидает клиент
interface MediaPlayer {
fun play(fileType: String, fileName: String)
}
// Несовместимый интерфейс
class AdvancedMediaPlayer {
fun playVlc(fileName: String) { /* ... */ }
fun playMp4(fileName: String) { /* ... */ }
}
// Адаптер
class MediaAdapter(private val advancedPlayer: AdvancedMediaPlayer) : MediaPlayer {
override fun play(fileType: String, fileName: String) {
when (fileType) {
"vlc" -> advancedPlayer.playVlc(fileName)
"mp4" -> advancedPlayer.playMp4(fileName)
}
}
}
Когда использовать:
- Когда нужно использовать существующий класс, но его интерфейс не соответствует требованиям
- Для работы с legacy-кодом
- Для интеграции сторонних библиотек
Видео-ответы
▶
Мок-собеседование по Java: разбор вопросов, паттерны, алгоритмы и лайвкодинг
▶
Собеседование Middle Python Developer на $2000 #6
▶
Мок-собеседование Junior Android developer
▶
Собеседование Java Junior | Подготовка к реальному собеседованию | Jetbulb
▶
Tech Interview Fest | Моковое cобеседование для C# Junior | Solvery + @DotNetRu